@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,296 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: Title
|
|
3
|
+
category: Typography
|
|
4
|
+
related: [Text, Caption, 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/Title.stories.tsx
|
|
29
|
+
version: "1.0"
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Title
|
|
33
|
+
|
|
34
|
+
## Назначение
|
|
35
|
+
|
|
36
|
+
Заголовок (типографика). Рендерит семантический heading `<h1>`–`<h3>` (тег по умолчанию совпадает со значением `size`) со шрифтом SBSansDisplay и цветом из палитры `EFontType`. `margin` у заголовков обнулён — отступы задаёт layout потребителя.
|
|
37
|
+
|
|
38
|
+
Используй когда: нужен заголовок страницы, секции, карточки или модального окна.
|
|
39
|
+
|
|
40
|
+
Не используй когда:
|
|
41
|
+
- Нужен обычный текст интерфейса — используй `Text`.
|
|
42
|
+
- Нужна крупная цифра/показатель (32px), не являющаяся заголовком — используй `Caption` с размером `D1`.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Варианты и props
|
|
47
|
+
|
|
48
|
+
### Обязательные props
|
|
49
|
+
|
|
50
|
+
| Prop | Тип | Описание |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `size` | `ETitleSize` | Размер заголовка: `H1` (28/36px), `H2` (24/32px), `H3` (20/28px). В скобках — font-size/line-height. Значения enum — строки `"h1"`/`"h2"`/`"h3"`. |
|
|
53
|
+
|
|
54
|
+
### Опциональные props
|
|
55
|
+
|
|
56
|
+
| Prop | Тип | По умолчанию | Описание |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| `weight` | `EFontWeightTitle` | `SEMIBOLD` | Начертание: `REGULAR` / `MEDIUM` (500) / `SEMIBOLD` (600) / `BOLD` (700). Каждому соответствует своё семейство SBSansDisplay*. |
|
|
59
|
+
| `type` | `EFontType` | `PRIMARY` | Цвет текста из общей палитры типографики (11 базовых + 11 `*_INVERT`). |
|
|
60
|
+
| `underline` | `boolean` | — | Подчёркивание. Совместим со `strikethrough` (оба сразу — `underline line-through`). |
|
|
61
|
+
| `strikethrough` | `boolean` | — | Зачёркивание. |
|
|
62
|
+
| `tag` | `string` | значение `size` | HTML-тег корневого элемента. По умолчанию равен значению `size` (`"h1"`/`"h2"`/`"h3"`) — визуальный размер и уровень heading связаны. Передай `tag` явно, чтобы развязать их (например, `size={ETitleSize.H1} tag="h2"`). |
|
|
63
|
+
|
|
64
|
+
Компонент типизирован как `TTitleProps<T extends keyof JSX.IntrinsicElements>` и принимает все атрибуты соответствующего HTML-элемента через spread.
|
|
65
|
+
|
|
66
|
+
### Ограничения
|
|
67
|
+
|
|
68
|
+
- Внешний тип `forwardRef<HTMLElement, TTitleProps<keyof JSX.IntrinsicElements>>` «растворяет» дженерик: TypeScript не сужает атрибуты под конкретный `tag`. Известное ограничение публичного API, не исправлять без обсуждения (breaking).
|
|
69
|
+
- Дефолт `` tag = `${size}` `` — намеренный трюк (значения `ETitleSize` совпадают с именами тегов); при изменении значений enum сломается и дефолтный тег — ещё одна причина не трогать значения.
|
|
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/Title.module.less` (токенов для них нет).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Инварианты
|
|
83
|
+
|
|
84
|
+
- **`forwardRef`** — обязателен, `ref` пробрасывается на корневой heading-элемент.
|
|
85
|
+
- **Значения enum** `ETitleSize` (строки `"h1"`/`"h2"`/`"h3"`), `EFontWeightTitle`, `EFontType` — публичный API из barrel. Изменение — breaking change; значения `ETitleSize` дополнительно используются как дефолтный `tag`.
|
|
86
|
+
- **`TTitleProps`**, **`ITypographyProps`** — публичные типы.
|
|
87
|
+
- **`displayName = "Title"`** — не убирать.
|
|
88
|
+
- `margin: 0` на `h1`–`h3` в `Title.module.less` — контракт: отступы вокруг заголовка задаёт потребитель.
|
|
89
|
+
- Классы собираются только через `clsx`.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Accessibility
|
|
94
|
+
|
|
95
|
+
- По умолчанию рендерится настоящий heading (`<h1>`–`<h3>`) — уровень в accessibility-дереве определяется `size`. Следи за иерархией заголовков страницы; если визуальный размер не совпадает с нужным уровнем — задай `tag` явно.
|
|
96
|
+
- Компонент не интерактивный: focus management и keyboard navigation не применимы.
|
|
97
|
+
- Цвет (`type`) не передаёт семантику для screen reader'ов.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Связанные компоненты
|
|
102
|
+
|
|
103
|
+
- `Text` — основной текст интерфейса (B1–B4, SBSansText).
|
|
104
|
+
- `Caption` — мелкие подписи и крупный показатель D1.
|
|
105
|
+
- `CodeText` — моноширинный текст.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Stories
|
|
110
|
+
|
|
111
|
+
Основные истории: `stories/Typography/Title.stories.tsx`
|
|
112
|
+
Файлы примеров: `stories/Typography/examples/Title/`
|
|
113
|
+
|
|
114
|
+
| Story | Example file | Что демонстрирует |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| `Playground` | `Playground.tsx` | Интерактивный контроль props `size`, `weight`, `type`, `tag`, `underline`, `strikethrough` |
|
|
117
|
+
| `Default` | `Default.tsx` | Минимальное использование |
|
|
118
|
+
| `Sizes` | `Sizes.tsx` | Размеры H1 / H2 / H3 |
|
|
119
|
+
| `Weights` | `Weights.tsx` | Начертания REGULAR / MEDIUM / SEMIBOLD / BOLD |
|
|
120
|
+
| `Types` | `Types.tsx` | Все значения `EFontType`: базовые + инвертированные на тёмной подложке |
|
|
121
|
+
| `Decorations` | `Decorations.tsx` | `underline`, `strikethrough` и их комбинация |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## История изменений
|
|
126
|
+
|
|
127
|
+
| Дата | Изменение |
|
|
128
|
+
|---|---|
|
|
129
|
+
| 2026-07-20 | Создан документ. AI-рефакторинг: decoration-логика вынесена во внутренний хелпер `getTextDecorationClassName` (`utils.ts`), комментарии переведены в JSDoc, unit-тесты расширены (все значения `ETitleSize`/`EFontWeightTitle`, дефолтные heading-теги). Stories переведены на modern pattern (`examples/Title/`). |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Примеры использования
|
|
134
|
+
|
|
135
|
+
### Default
|
|
136
|
+
|
|
137
|
+
`stories/Typography/examples/Title/Default.tsx`
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
import React from "react";
|
|
141
|
+
import { Title, ETitleSize } from "@sberbusiness/triplex-next";
|
|
142
|
+
|
|
143
|
+
export const Default = () => <Title size={ETitleSize.H1}>Заголовок страницы</Title>;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Sizes
|
|
147
|
+
|
|
148
|
+
`stories/Typography/examples/Title/Sizes.tsx`
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
import React from "react";
|
|
152
|
+
import { Title, ETitleSize } from "@sberbusiness/triplex-next";
|
|
153
|
+
|
|
154
|
+
export const Sizes = () => (
|
|
155
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
156
|
+
<Title size={ETitleSize.H1}>Заголовок H1</Title>
|
|
157
|
+
<Title size={ETitleSize.H2}>Заголовок H2</Title>
|
|
158
|
+
<Title size={ETitleSize.H3}>Заголовок H3</Title>
|
|
159
|
+
</div>
|
|
160
|
+
);
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Weights
|
|
164
|
+
|
|
165
|
+
`stories/Typography/examples/Title/Weights.tsx`
|
|
166
|
+
|
|
167
|
+
```tsx
|
|
168
|
+
import React from "react";
|
|
169
|
+
import { Title, ETitleSize, EFontWeightTitle } from "@sberbusiness/triplex-next";
|
|
170
|
+
|
|
171
|
+
export const Weights = () => (
|
|
172
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
173
|
+
<Title size={ETitleSize.H2} weight={EFontWeightTitle.REGULAR}>
|
|
174
|
+
Regular - Обычный вес
|
|
175
|
+
</Title>
|
|
176
|
+
<Title size={ETitleSize.H2} weight={EFontWeightTitle.MEDIUM}>
|
|
177
|
+
Medium - Средний вес
|
|
178
|
+
</Title>
|
|
179
|
+
<Title size={ETitleSize.H2} weight={EFontWeightTitle.SEMIBOLD}>
|
|
180
|
+
Semibold - Полужирный
|
|
181
|
+
</Title>
|
|
182
|
+
<Title size={ETitleSize.H2} weight={EFontWeightTitle.BOLD}>
|
|
183
|
+
Bold - Жирный
|
|
184
|
+
</Title>
|
|
185
|
+
</div>
|
|
186
|
+
);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Types
|
|
190
|
+
|
|
191
|
+
`stories/Typography/examples/Title/Types.tsx`
|
|
192
|
+
|
|
193
|
+
```tsx
|
|
194
|
+
import React from "react";
|
|
195
|
+
import { Title, ETitleSize, EFontType } from "@sberbusiness/triplex-next";
|
|
196
|
+
|
|
197
|
+
export const Types = () => (
|
|
198
|
+
<div style={{ display: "flex", gap: "16px" }}>
|
|
199
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
200
|
+
<Title size={ETitleSize.H2} type={EFontType.PRIMARY}>
|
|
201
|
+
Primary
|
|
202
|
+
</Title>
|
|
203
|
+
<Title size={ETitleSize.H2} type={EFontType.COMPLEMENTARY}>
|
|
204
|
+
Complementary
|
|
205
|
+
</Title>
|
|
206
|
+
<Title size={ETitleSize.H2} type={EFontType.SECONDARY}>
|
|
207
|
+
Secondary
|
|
208
|
+
</Title>
|
|
209
|
+
<Title size={ETitleSize.H2} type={EFontType.TERTIARY}>
|
|
210
|
+
Tertiary
|
|
211
|
+
</Title>
|
|
212
|
+
<Title size={ETitleSize.H2} type={EFontType.BRAND}>
|
|
213
|
+
Brand
|
|
214
|
+
</Title>
|
|
215
|
+
<Title size={ETitleSize.H2} type={EFontType.INFO}>
|
|
216
|
+
Info
|
|
217
|
+
</Title>
|
|
218
|
+
<Title size={ETitleSize.H2} type={EFontType.SUCCESS}>
|
|
219
|
+
Success
|
|
220
|
+
</Title>
|
|
221
|
+
<Title size={ETitleSize.H2} type={EFontType.WARNING}>
|
|
222
|
+
Warning
|
|
223
|
+
</Title>
|
|
224
|
+
<Title size={ETitleSize.H2} type={EFontType.ERROR}>
|
|
225
|
+
Error
|
|
226
|
+
</Title>
|
|
227
|
+
<Title size={ETitleSize.H2} type={EFontType.DISABLED}>
|
|
228
|
+
Disabled
|
|
229
|
+
</Title>
|
|
230
|
+
<Title size={ETitleSize.H2} type={EFontType.SYSTEM}>
|
|
231
|
+
System
|
|
232
|
+
</Title>
|
|
233
|
+
</div>
|
|
234
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px", backgroundColor: "#1F1F22" }}>
|
|
235
|
+
<Title size={ETitleSize.H2} type={EFontType.PRIMARY_INVERT}>
|
|
236
|
+
Primary Invert
|
|
237
|
+
</Title>
|
|
238
|
+
<Title size={ETitleSize.H2} type={EFontType.COMPLEMENTARY_INVERT}>
|
|
239
|
+
Complementary Invert
|
|
240
|
+
</Title>
|
|
241
|
+
<Title size={ETitleSize.H2} type={EFontType.SECONDARY_INVERT}>
|
|
242
|
+
Secondary Invert
|
|
243
|
+
</Title>
|
|
244
|
+
<Title size={ETitleSize.H2} type={EFontType.TERTIARY_INVERT}>
|
|
245
|
+
Tertiary Invert
|
|
246
|
+
</Title>
|
|
247
|
+
<Title size={ETitleSize.H2} type={EFontType.BRAND_INVERT}>
|
|
248
|
+
Brand Invert
|
|
249
|
+
</Title>
|
|
250
|
+
<Title size={ETitleSize.H2} type={EFontType.INFO_INVERT}>
|
|
251
|
+
Info Invert
|
|
252
|
+
</Title>
|
|
253
|
+
<Title size={ETitleSize.H2} type={EFontType.SUCCESS_INVERT}>
|
|
254
|
+
Success Invert
|
|
255
|
+
</Title>
|
|
256
|
+
<Title size={ETitleSize.H2} type={EFontType.WARNING_INVERT}>
|
|
257
|
+
Warning Invert
|
|
258
|
+
</Title>
|
|
259
|
+
<Title size={ETitleSize.H2} type={EFontType.ERROR_INVERT}>
|
|
260
|
+
Error Invert
|
|
261
|
+
</Title>
|
|
262
|
+
<Title size={ETitleSize.H2} type={EFontType.DISABLED_INVERT}>
|
|
263
|
+
Disabled Invert
|
|
264
|
+
</Title>
|
|
265
|
+
<Title size={ETitleSize.H2} type={EFontType.SYSTEM_INVERT}>
|
|
266
|
+
System Invert
|
|
267
|
+
</Title>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
);
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Decorations
|
|
274
|
+
|
|
275
|
+
`stories/Typography/examples/Title/Decorations.tsx`
|
|
276
|
+
|
|
277
|
+
```tsx
|
|
278
|
+
import React from "react";
|
|
279
|
+
import { Title, ETitleSize } from "@sberbusiness/triplex-next";
|
|
280
|
+
|
|
281
|
+
export const Decorations = () => (
|
|
282
|
+
<div style={{ display: "flex", flexDirection: "column", gap: "16px" }}>
|
|
283
|
+
<Title size={ETitleSize.H2}>Заголовок без декораций</Title>
|
|
284
|
+
<Title size={ETitleSize.H2} underline>
|
|
285
|
+
Заголовок с подчеркиванием
|
|
286
|
+
</Title>
|
|
287
|
+
<Title size={ETitleSize.H2} strikethrough>
|
|
288
|
+
Заголовок с зачеркиванием
|
|
289
|
+
</Title>
|
|
290
|
+
<Title size={ETitleSize.H2} underline strikethrough>
|
|
291
|
+
Заголовок с подчеркиванием и зачеркиванием
|
|
292
|
+
</Title>
|
|
293
|
+
</div>
|
|
294
|
+
);
|
|
295
|
+
```
|
|
296
|
+
|