@salutejs/plasma-new-hope 0.66.0-dev.0 → 0.66.1-canary.1149.8446846250.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +2 -2
- package/styled-components/cjs/components/Avatar/Avatar.template-doc.mdx +97 -0
- package/styled-components/cjs/components/AvatarGroup/AvatarGroup.template-doc.mdx +29 -0
- package/styled-components/cjs/components/Badge/Badge.template-doc.mdx +131 -0
- package/styled-components/cjs/components/Button/Button.template-doc.mdx +162 -0
- package/styled-components/cjs/components/ButtonGroup/ButtonGroup.template-doc.mdx +123 -0
- package/styled-components/cjs/components/Calendar/Calendar.template-doc.mdx +208 -0
- package/styled-components/cjs/components/Checkbox/Checkbox.template-doc.mdx +44 -0
- package/styled-components/cjs/components/Chip/Chip.template-doc.mdx +90 -0
- package/styled-components/cjs/components/Combobox/Combobox.template-doc.mdx +237 -0
- package/styled-components/cjs/components/Counter/Counter.template-doc.mdx +76 -0
- package/styled-components/cjs/components/Drawer/Drawer.template-doc.mdx +170 -0
- package/styled-components/cjs/components/Dropdown/Dropdown.template-doc.mdx +80 -0
- package/styled-components/cjs/components/Grid/Grid.template-doc.mdx +142 -0
- package/styled-components/cjs/components/Image/Image.template-doc.mdx +26 -0
- package/styled-components/cjs/components/Indicator/Indicator.template-doc.mdx +76 -0
- package/styled-components/cjs/components/Link/Link.template-doc.mdx +23 -0
- package/styled-components/cjs/components/Modal/Modal.template-doc.mdx +56 -0
- package/styled-components/cjs/components/Notification/Notification.template-doc.mdx +59 -0
- package/styled-components/cjs/components/Overlay/Overlay.template-doc.mdx +10 -0
- package/styled-components/cjs/components/Popover/Popover.template-doc.mdx +72 -0
- package/styled-components/cjs/components/Popup/Popup.template-doc.mdx +209 -0
- package/styled-components/cjs/components/Radiobox/Radiobox.template-doc.mdx +38 -0
- package/styled-components/cjs/components/Segment/Segment.template-doc.mdx +61 -0
- package/styled-components/cjs/components/Select/Select.template-doc.mdx +115 -0
- package/styled-components/cjs/components/Skeleton/Skeleton.template-doc.mdx +103 -0
- package/styled-components/cjs/components/Spinner/Spinner.template-doc.mdx +21 -0
- package/styled-components/cjs/components/Switch/Switch.template-doc.mdx +24 -0
- package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +94 -0
- package/styled-components/cjs/components/TextArea/TextArea.template-doc.mdx +88 -0
- package/styled-components/cjs/components/TextField/TextField.template-doc.mdx +112 -0
- package/styled-components/cjs/components/Toast/Toast.template-doc.mdx +153 -0
- package/styled-components/cjs/components/Tooltip/Tooltip.template-doc.mdx +30 -0
- package/styled-components/cjs/components/Typography/Typography.template-doc.mdx +127 -0
- package/styled-components/es/components/Avatar/Avatar.template-doc.mdx +97 -0
- package/styled-components/es/components/AvatarGroup/AvatarGroup.template-doc.mdx +29 -0
- package/styled-components/es/components/Badge/Badge.template-doc.mdx +131 -0
- package/styled-components/es/components/Button/Button.template-doc.mdx +162 -0
- package/styled-components/es/components/ButtonGroup/ButtonGroup.template-doc.mdx +123 -0
- package/styled-components/es/components/Calendar/Calendar.template-doc.mdx +208 -0
- package/styled-components/es/components/Checkbox/Checkbox.template-doc.mdx +44 -0
- package/styled-components/es/components/Chip/Chip.template-doc.mdx +90 -0
- package/styled-components/es/components/Combobox/Combobox.template-doc.mdx +237 -0
- package/styled-components/es/components/Counter/Counter.template-doc.mdx +76 -0
- package/styled-components/es/components/Drawer/Drawer.template-doc.mdx +170 -0
- package/styled-components/es/components/Dropdown/Dropdown.template-doc.mdx +80 -0
- package/styled-components/es/components/Grid/Grid.template-doc.mdx +142 -0
- package/styled-components/es/components/Image/Image.template-doc.mdx +26 -0
- package/styled-components/es/components/Indicator/Indicator.template-doc.mdx +76 -0
- package/styled-components/es/components/Link/Link.template-doc.mdx +23 -0
- package/styled-components/es/components/Modal/Modal.template-doc.mdx +56 -0
- package/styled-components/es/components/Notification/Notification.template-doc.mdx +59 -0
- package/styled-components/es/components/Overlay/Overlay.template-doc.mdx +10 -0
- package/styled-components/es/components/Popover/Popover.template-doc.mdx +72 -0
- package/styled-components/es/components/Popup/Popup.template-doc.mdx +209 -0
- package/styled-components/es/components/Radiobox/Radiobox.template-doc.mdx +38 -0
- package/styled-components/es/components/Segment/Segment.template-doc.mdx +61 -0
- package/styled-components/es/components/Select/Select.template-doc.mdx +115 -0
- package/styled-components/es/components/Skeleton/Skeleton.template-doc.mdx +103 -0
- package/styled-components/es/components/Spinner/Spinner.template-doc.mdx +21 -0
- package/styled-components/es/components/Switch/Switch.template-doc.mdx +24 -0
- package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +94 -0
- package/styled-components/es/components/TextArea/TextArea.template-doc.mdx +88 -0
- package/styled-components/es/components/TextField/TextField.template-doc.mdx +112 -0
- package/styled-components/es/components/Toast/Toast.template-doc.mdx +153 -0
- package/styled-components/es/components/Tooltip/Tooltip.template-doc.mdx +30 -0
- package/styled-components/es/components/Typography/Typography.template-doc.mdx +127 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
---
|
2
|
+
id: tabs
|
3
|
+
title: Tabs
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# Tabs
|
9
|
+
Набор компонентов для создания вкладок.
|
10
|
+
Структура для вкладок похожа на структуру маркированных списков.
|
11
|
+
|
12
|
+
## TabsController
|
13
|
+
|
14
|
+
<Description name="TabsController" />
|
15
|
+
<PropsTable name="TabsController" />
|
16
|
+
|
17
|
+
## Tabs
|
18
|
+
|
19
|
+
<Description name="Tabs" />
|
20
|
+
<PropsTable name="Tabs" />
|
21
|
+
|
22
|
+
## TabItem
|
23
|
+
|
24
|
+
<Description name="TabItem" />
|
25
|
+
<PropsTable name="TabItem" />
|
26
|
+
|
27
|
+
|
28
|
+
## Использование
|
29
|
+
|
30
|
+
### Cтандартное подключение, без клавиатурной навигации
|
31
|
+
|
32
|
+
```tsx live
|
33
|
+
import React, { useState } from 'react';
|
34
|
+
import { Tabs, TabItem } from '@salutejs/{{ package }}';
|
35
|
+
import { IconClock } from '@salutejs/plasma-icons';
|
36
|
+
|
37
|
+
export function App() {
|
38
|
+
const items = Array(4).fill(0);
|
39
|
+
const [index, setIndex] = useState(0);
|
40
|
+
|
41
|
+
return (
|
42
|
+
<Tabs view="filled" stretch size="xs">
|
43
|
+
{items.map((_, i) => (
|
44
|
+
<TabItem
|
45
|
+
view="secondary"
|
46
|
+
key={`item:${i}`}
|
47
|
+
size="xs"
|
48
|
+
selected={i === index}
|
49
|
+
tabIndex={0}
|
50
|
+
contentLeft={<IconClock size="xs" color="inherit" />}
|
51
|
+
onClick={() => setIndex(i)}
|
52
|
+
>
|
53
|
+
Label
|
54
|
+
</TabItem>
|
55
|
+
))}
|
56
|
+
</Tabs>
|
57
|
+
);
|
58
|
+
}
|
59
|
+
```
|
60
|
+
|
61
|
+
### Подключение клавиатурной навигации
|
62
|
+
Для этого необходимо дополнительно прокинуть свойства `index, itemIndex, onIndexChange`.
|
63
|
+
Клавиши ArrowLeft, ArrowRight, Home, End для навигации по вкладкам.
|
64
|
+
|
65
|
+
```tsx live
|
66
|
+
import React, { useState } from 'react';
|
67
|
+
import { Tabs, TabItem } from '@salutejs/{{ package }}';
|
68
|
+
import { IconClock } from '@salutejs/plasma-icons';
|
69
|
+
|
70
|
+
export function App() {
|
71
|
+
const items = Array(4).fill(0);
|
72
|
+
const [index, setIndex] = useState(0);
|
73
|
+
|
74
|
+
return (
|
75
|
+
<Tabs view="filled" stretch size="xs" index={index}>
|
76
|
+
{items.map((_, i) => (
|
77
|
+
<TabItem
|
78
|
+
view="secondary"
|
79
|
+
key={`item:${i}`}
|
80
|
+
size="xs"
|
81
|
+
itemIndex={i}
|
82
|
+
onIndexChange={(i) => setIndex(i)}
|
83
|
+
selected={i === index}
|
84
|
+
tabIndex={0}
|
85
|
+
contentLeft={<IconClock size="xs" color="inherit" />}
|
86
|
+
onClick={() => setIndex(i)}
|
87
|
+
>
|
88
|
+
Label
|
89
|
+
</TabItem>
|
90
|
+
))}
|
91
|
+
</Tabs>
|
92
|
+
);
|
93
|
+
}
|
94
|
+
```
|
@@ -0,0 +1,88 @@
|
|
1
|
+
---
|
2
|
+
id: textarea
|
3
|
+
title: TextArea
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# TextArea
|
9
|
+
<Description name="TextArea" />
|
10
|
+
<PropsTable name="TextArea" exclude={['$isFocused']} />
|
11
|
+
|
12
|
+
## Использование
|
13
|
+
Компонент `TextArea` может содержать иконку (или кнопку) справа.
|
14
|
+
Для этого используйте свойство и `contentRight`:
|
15
|
+
|
16
|
+
```tsx live
|
17
|
+
import React from 'react';
|
18
|
+
import { TextArea } from '@salutejs/{{ package }}';
|
19
|
+
import { IconDownload } from '@salutejs/plasma-icons';
|
20
|
+
|
21
|
+
export function App() {
|
22
|
+
return (
|
23
|
+
<div>
|
24
|
+
<TextArea
|
25
|
+
placeholder="Положение иконки"
|
26
|
+
defaultValue="Справа"
|
27
|
+
contentRight={<IconDownload />}
|
28
|
+
/>
|
29
|
+
</div>
|
30
|
+
);
|
31
|
+
}
|
32
|
+
```
|
33
|
+
|
34
|
+
Также можно регулировать высоту и ширину, используя свойства `height` и `width`,
|
35
|
+
указав значения в `rem` или соответствующие свойствам css значения.
|
36
|
+
|
37
|
+
## Autoresize
|
38
|
+
Также можно включить автоматическое регулирование высоты поля ввода по длине контента внутри (параметра `value`).
|
39
|
+
Для этого необходимо использовать свойство `autoResize`.
|
40
|
+
При этом, если пользователь вручную регулирует высоту(`resize`), то она так и остается пользовательской.
|
41
|
+
|
42
|
+
В этом режиме можно указать крайние значения высоты поля ввода, используя свойства `autoMin`, `autoMax`,
|
43
|
+
указав их в `rem`.
|
44
|
+
|
45
|
+
```tsx live
|
46
|
+
import React from 'react';
|
47
|
+
import { TextArea } from '@salutejs/{{ package }}';
|
48
|
+
|
49
|
+
export function App() {
|
50
|
+
const [value, setValue] = React.useState('Значение');
|
51
|
+
|
52
|
+
return (
|
53
|
+
<div>
|
54
|
+
<TextArea
|
55
|
+
placeholder="Введите значение"
|
56
|
+
value={value}
|
57
|
+
onChange={(e) => {
|
58
|
+
setValue(e.target.value);
|
59
|
+
}}
|
60
|
+
autoResize
|
61
|
+
minAuto={3}
|
62
|
+
maxAuto={5}
|
63
|
+
/>
|
64
|
+
</div>
|
65
|
+
);
|
66
|
+
}
|
67
|
+
```
|
68
|
+
|
69
|
+
### Подсказка
|
70
|
+
Для вывода подсказки снизу от поля используйте свойство `leftHelper` и/или `rightHelper`.
|
71
|
+
|
72
|
+
```tsx live
|
73
|
+
import React from 'react';
|
74
|
+
import { TextArea } from '@salutejs/{{ package }}';
|
75
|
+
|
76
|
+
export function App() {
|
77
|
+
return (
|
78
|
+
<div>
|
79
|
+
<TextArea
|
80
|
+
placeholder="Введите значение"
|
81
|
+
defaultValue="Значение"
|
82
|
+
leftHelper="Подсказка снизу слева"
|
83
|
+
rightHelper="Подсказка снизу справа"
|
84
|
+
/>
|
85
|
+
</div>
|
86
|
+
);
|
87
|
+
}
|
88
|
+
```
|
@@ -0,0 +1,112 @@
|
|
1
|
+
---
|
2
|
+
id: textfield
|
3
|
+
title: TextField
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# TextField
|
9
|
+
<Description name="TextField" />
|
10
|
+
<PropsTable name="TextField" exclude={['$isFocused']} />
|
11
|
+
|
12
|
+
## Использование
|
13
|
+
Компонент `TextField` может содержать иконку (или кнопку) слева и справа.
|
14
|
+
Для этого используйте свойства `contentLeft` и `contentRight`:
|
15
|
+
|
16
|
+
```tsx live
|
17
|
+
import React from 'react';
|
18
|
+
import { TextField } from '@salutejs/{{ package }}';
|
19
|
+
import { IconDownload } from '@salutejs/plasma-icons';
|
20
|
+
|
21
|
+
export function App() {
|
22
|
+
return (
|
23
|
+
<div>
|
24
|
+
<TextField
|
25
|
+
placeholder="Положение иконки"
|
26
|
+
defaultValue="Слева"
|
27
|
+
contentLeft={<IconDownload />}
|
28
|
+
/>
|
29
|
+
<TextField
|
30
|
+
placeholder="Положение иконки"
|
31
|
+
defaultValue="Справа"
|
32
|
+
contentRight={<IconDownload />}
|
33
|
+
/>
|
34
|
+
</div>
|
35
|
+
);
|
36
|
+
}
|
37
|
+
```
|
38
|
+
|
39
|
+
### Размер поля
|
40
|
+
Размер поля задаётся с помощью свойства `size`. Свойство принимает значения `"l"` и `"m"`:
|
41
|
+
|
42
|
+
```tsx live
|
43
|
+
import React from 'react';
|
44
|
+
import { TextField } from '@salutejs/{{ package }}';
|
45
|
+
|
46
|
+
export function App() {
|
47
|
+
return (
|
48
|
+
<div>
|
49
|
+
<TextField
|
50
|
+
placeholder="Размер"
|
51
|
+
size="l"
|
52
|
+
defaultValue="L56"
|
53
|
+
/>
|
54
|
+
<TextField
|
55
|
+
placeholder="Размер"
|
56
|
+
size="m"
|
57
|
+
defaultValue="M48"
|
58
|
+
/>
|
59
|
+
</div>
|
60
|
+
);
|
61
|
+
}
|
62
|
+
```
|
63
|
+
|
64
|
+
### Статус поля
|
65
|
+
Статус поля задается с помощью свойства `status`. Возможные значения свойства: `success`, `warning` и `error`:
|
66
|
+
|
67
|
+
```tsx live
|
68
|
+
import React from 'react';
|
69
|
+
import { TextField } from '@salutejs/{{ package }}';
|
70
|
+
|
71
|
+
export function App() {
|
72
|
+
return (
|
73
|
+
<div>
|
74
|
+
<TextField
|
75
|
+
placeholder="Статус"
|
76
|
+
status="success"
|
77
|
+
defaultValue="Успех"
|
78
|
+
/>
|
79
|
+
<TextField
|
80
|
+
placeholder="Статус"
|
81
|
+
status="warning"
|
82
|
+
defaultValue="Успех"
|
83
|
+
/>
|
84
|
+
<TextField
|
85
|
+
placeholder="Статус"
|
86
|
+
status="error"
|
87
|
+
defaultValue="Ошибка"
|
88
|
+
/>
|
89
|
+
</div>
|
90
|
+
);
|
91
|
+
}
|
92
|
+
```
|
93
|
+
|
94
|
+
### Подсказка
|
95
|
+
Для вывода подсказки снизу от поля используйте свойство `helperText`:
|
96
|
+
|
97
|
+
```tsx live
|
98
|
+
import React from 'react';
|
99
|
+
import { TextField } from '@salutejs/{{ package }}';
|
100
|
+
|
101
|
+
export function App() {
|
102
|
+
return (
|
103
|
+
<div>
|
104
|
+
<TextField
|
105
|
+
placeholder="Введите значение"
|
106
|
+
defaultValue="Значение"
|
107
|
+
helperText="Подсказка снизу"
|
108
|
+
/>
|
109
|
+
</div>
|
110
|
+
);
|
111
|
+
}
|
112
|
+
```
|
@@ -0,0 +1,153 @@
|
|
1
|
+
---
|
2
|
+
id: toast
|
3
|
+
title: Toast
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# Toast
|
9
|
+
<Description name="Toast" />
|
10
|
+
<PropsTable name="Toast" />
|
11
|
+
|
12
|
+
## Система подсказок
|
13
|
+
Существует готовая система текстовых подсказок, для использования которой необходимо обернуть приложение в `ToastProvider`:
|
14
|
+
|
15
|
+
```jsx title="App.tsx"
|
16
|
+
import React from 'react';
|
17
|
+
import { ToastProvider } from '@salutejs/{{ package }}';
|
18
|
+
|
19
|
+
export const App = () => (
|
20
|
+
<ToastProvider>
|
21
|
+
<div className="App">Hello, world!</div>
|
22
|
+
</ToastProvider>
|
23
|
+
);
|
24
|
+
```
|
25
|
+
|
26
|
+
После этого, с помощью хука `useToast` можно получить доступ к управлению подсказками.
|
27
|
+
|
28
|
+
```jsx title="MyComponent.tsx"
|
29
|
+
import React from 'react'
|
30
|
+
import { useToast, Button } from '@salutejs/{{ package }}'
|
31
|
+
|
32
|
+
export const MyComponent = () => {
|
33
|
+
const { showToast, hideToast } = useToast()
|
34
|
+
|
35
|
+
const onHide = () => {}
|
36
|
+
|
37
|
+
return (
|
38
|
+
<Button onClick={() => showToast({ text, position, timeout, fade, contentLeft, role, onHide })} />
|
39
|
+
)
|
40
|
+
}
|
41
|
+
```
|
42
|
+
|
43
|
+
`showToast` имеет необязательный аргумент `position`, отвечающий за позиционирование подсказки.
|
44
|
+
|
45
|
+
```ts
|
46
|
+
type Position = 'top' | 'bottom';
|
47
|
+
```
|
48
|
+
|
49
|
+
`showToast` имеет необязательный аргумент `timeout`, отвечающий за время отображения подсказки.
|
50
|
+
Если аргумент не передается, по умолчанию подсказка отображается пока пользователь ее не закроет.
|
51
|
+
|
52
|
+
Скрыть текущую подсказку в любой момент можно с помощью функции `hideToast`.
|
53
|
+
|
54
|
+
## Аргументы функции `showToast`
|
55
|
+
| Название | Тип | Значение | Описание |
|
56
|
+
|----------|-----------------|----------|--------------------|
|
57
|
+
| `args` | `ShowToastArgs` | | Конфигурация toast |
|
58
|
+
|
59
|
+
```ts
|
60
|
+
import type { ReactNode } from 'react';
|
61
|
+
|
62
|
+
export interface ShowToastArgs {
|
63
|
+
/**
|
64
|
+
* Текстовая надпись
|
65
|
+
*/
|
66
|
+
text?: string;
|
67
|
+
/**
|
68
|
+
* Слот для контента слева, например `Icon`
|
69
|
+
*/
|
70
|
+
contentLeft?: ReactNode;
|
71
|
+
/**
|
72
|
+
* Место отображения подсказки
|
73
|
+
*/
|
74
|
+
position?: ToastPosition;
|
75
|
+
/**
|
76
|
+
* WAI-ARIA роль
|
77
|
+
*/
|
78
|
+
role?: ToastRole;
|
79
|
+
/**
|
80
|
+
* Отображать ли подложку блока подсказки
|
81
|
+
*/
|
82
|
+
fade?: boolean;
|
83
|
+
/**
|
84
|
+
* Значение для дополнительно отступа блока подсказки, считается в rem.
|
85
|
+
*/
|
86
|
+
offset?: number;
|
87
|
+
/**
|
88
|
+
* Блок подсказки c округлым border-radius
|
89
|
+
*/
|
90
|
+
pilled?: boolean;
|
91
|
+
/**
|
92
|
+
* Отображать ли иконку закрытия
|
93
|
+
*/
|
94
|
+
hasClose?: boolean;
|
95
|
+
/**
|
96
|
+
* Размер блока подсказки
|
97
|
+
*/
|
98
|
+
size?: string;
|
99
|
+
/**
|
100
|
+
* Вид блока подсказки
|
101
|
+
*/
|
102
|
+
view?: string;
|
103
|
+
/**
|
104
|
+
* Время отображения подсказки. Если не передать значение, подсказка будет отображаться пока ее не закроют.
|
105
|
+
*/
|
106
|
+
timeout?: number;
|
107
|
+
/**
|
108
|
+
* callback срабатывающий в момент события hideToast
|
109
|
+
*/
|
110
|
+
onHide?: () => void;
|
111
|
+
/**
|
112
|
+
* callback срабатывающий в момент события showToast
|
113
|
+
*/
|
114
|
+
onShow?: () => void;
|
115
|
+
}
|
116
|
+
```
|
117
|
+
|
118
|
+
## Пример использования
|
119
|
+
|
120
|
+
```jsx live
|
121
|
+
import React from 'react'
|
122
|
+
import { useToast, ToastProvider, Button } from '@salutejs/{{ package }}'
|
123
|
+
|
124
|
+
export function App() {
|
125
|
+
|
126
|
+
const ToastExample = () => {
|
127
|
+
const { showToast, hideToast } = useToast()
|
128
|
+
|
129
|
+
const onShow = () => {}
|
130
|
+
const onHide = () => {}
|
131
|
+
const toastData = {
|
132
|
+
text: 'Подсказка вызванная showToast',
|
133
|
+
position: 'bottom',
|
134
|
+
role: 'status',
|
135
|
+
hasClose: true,
|
136
|
+
fade: false,
|
137
|
+
size: 'm',
|
138
|
+
view: 'dark',
|
139
|
+
timeout: 3000,
|
140
|
+
onShow,
|
141
|
+
onHide
|
142
|
+
}
|
143
|
+
|
144
|
+
return <Button onClick={() => showToast(toastData)} text="Вызвать подсказку" />
|
145
|
+
}
|
146
|
+
|
147
|
+
return (
|
148
|
+
<ToastProvider>
|
149
|
+
<ToastExample />
|
150
|
+
</ToastProvider>
|
151
|
+
)
|
152
|
+
}
|
153
|
+
```
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
id: Tooltip
|
3
|
+
title: Tooltip
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# Tooltip
|
9
|
+
<Description name="Tooltip" />
|
10
|
+
<PropsTable name="Tooltip" />
|
11
|
+
|
12
|
+
## Базовое применение
|
13
|
+
|
14
|
+
`Tooltip` оборачивает собой любой компонент и открывается в заданную сторону(причем можно передавать массив, тогда сторона будет определяться автоматически из переданных).
|
15
|
+
|
16
|
+
Предполагается оборачивать иконки из пакета `@salutejs/plasma-icons`
|
17
|
+
|
18
|
+
```tsx live
|
19
|
+
import React from 'react';
|
20
|
+
import { Tooltip } from '@salutejs/{{ package }}';
|
21
|
+
import { IconApps } from '@salutejs/plasma-icons';
|
22
|
+
|
23
|
+
export function App() {
|
24
|
+
return (
|
25
|
+
<div style=\{{marginLeft: '100px',marginBottom: '35px'}}>
|
26
|
+
<Tooltip target={( <IconApps />)} text="Высокое качество воспроизведения" placement="bottom" hasArrow isOpen />
|
27
|
+
</div>
|
28
|
+
);
|
29
|
+
}
|
30
|
+
```
|
@@ -0,0 +1,127 @@
|
|
1
|
+
---
|
2
|
+
id: typography
|
3
|
+
title: Typography
|
4
|
+
---
|
5
|
+
|
6
|
+
# Typography
|
7
|
+
В состав Plasma Web входят компоненты, реализующие типографическую систему [типографическую систему Plasma](../../design/typography).
|
8
|
+
Они заменяют обычные HTML-теги, такие, как `h1`, `h2`, `h3`, `h4`, `p`, etc.
|
9
|
+
|
10
|
+
## Установка шрифта
|
11
|
+
Компоненты типографики используют фирменный шрифт **SB Sans Text**.
|
12
|
+
О том, как установить данный шрифт, смотрите на странице [Типографическая система](../../design/typography#установка-шрифта).
|
13
|
+
|
14
|
+
## Отступы
|
15
|
+
По умолчанию типографика поддерживает стандартные отступы.
|
16
|
+
О том, как использовать отступы, читайте на странице [Стандартные отступы](../../design/spacing#встроенные-отступы-в-типографике).
|
17
|
+
|
18
|
+
## Переносы
|
19
|
+
По умолчанию в типографике слова переносятся по слогам.
|
20
|
+
Чтобы отключить данный функционал, необходимо установить свойство `breakWord` в значении `false`.
|
21
|
+
|
22
|
+
## Состав
|
23
|
+
|
24
|
+
### Hero unit
|
25
|
+
|
26
|
+
```tsx live
|
27
|
+
import React from 'react';
|
28
|
+
import { DsplL, DsplM, DsplS } from '@salutejs/{{ package }}';
|
29
|
+
|
30
|
+
export function App() {
|
31
|
+
return (
|
32
|
+
<div style=\{{ display: 'block' }}>
|
33
|
+
<DsplL bold={false}>DsplL</DsplL>
|
34
|
+
<DsplL>DsplL Bold</DsplL>
|
35
|
+
|
36
|
+
<DsplM bold={false}>DsplM</DsplM>
|
37
|
+
<DsplM>DsplM Bold</DsplM>
|
38
|
+
|
39
|
+
<DsplS bold={false}>DsplS</DsplS>
|
40
|
+
<DsplS>DsplS Bold</DsplS>
|
41
|
+
</div>
|
42
|
+
);
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
### Заголовки
|
47
|
+
|
48
|
+
```tsx live
|
49
|
+
import React from 'react';
|
50
|
+
import { H1, H2, H3, H4, H5 } from '@salutejs/{{ package }}';
|
51
|
+
|
52
|
+
export function App() {
|
53
|
+
return (
|
54
|
+
<div style=\{{ display: 'block' }}>
|
55
|
+
<H1 bold={false}>H1</H1>
|
56
|
+
<H1>H1 Bold</H1>
|
57
|
+
|
58
|
+
<H2 bold={false}>H2</H2>
|
59
|
+
<H2>H2 Bold</H2>
|
60
|
+
|
61
|
+
<H3 bold={false}>H3</H3>
|
62
|
+
<H3>H3 Bold</H3>
|
63
|
+
|
64
|
+
<H4 bold={false}>H4</H4>
|
65
|
+
<H4>H4 Bold</H4>
|
66
|
+
|
67
|
+
<H5 bold={false}>H5</H5>
|
68
|
+
<H5>H5 Bold</H5>
|
69
|
+
</div>
|
70
|
+
);
|
71
|
+
}
|
72
|
+
```
|
73
|
+
|
74
|
+
### Интерфейсы
|
75
|
+
Типографика для таких частей интерфейса, как button, label, подписи, и т.п.
|
76
|
+
|
77
|
+
```tsx live
|
78
|
+
import React from 'react';
|
79
|
+
import { BodyL, BodyM, BodyS, BodyXS, BodyXXS } from '@salutejs/{{ package }}';
|
80
|
+
|
81
|
+
export function App() {
|
82
|
+
return (
|
83
|
+
<div style=\{{ display: 'block' }}>
|
84
|
+
<BodyL>BodyL</BodyL>
|
85
|
+
<BodyL bold>BodyL полужирный</BodyL>
|
86
|
+
|
87
|
+
<BodyM>BodyM</BodyM>
|
88
|
+
<BodyM bold>BodyM полужирный</BodyM>
|
89
|
+
|
90
|
+
<BodyS>BodyS</BodyS>
|
91
|
+
<BodyS bold>BodyS полужирный</BodyS>
|
92
|
+
|
93
|
+
<BodyXS>BodyXS</BodyXS>
|
94
|
+
<BodyXS bold>BodyXS полужирный</BodyXS>
|
95
|
+
|
96
|
+
<BodyXXS>BodyXXS</BodyXXS>
|
97
|
+
<BodyXXS bold>BodyXXS полужирный</BodyXXS>
|
98
|
+
</div>
|
99
|
+
);
|
100
|
+
}
|
101
|
+
```
|
102
|
+
|
103
|
+
### Текст
|
104
|
+
Типографические элементы для описаний к статьям, дополнительной информации и т.д.
|
105
|
+
|
106
|
+
```tsx live
|
107
|
+
import React from 'react';
|
108
|
+
import { TextL, TextM, TextS, TextXS } from '@salutejs/{{ package }}';
|
109
|
+
|
110
|
+
export function App() {
|
111
|
+
return (
|
112
|
+
<div style=\{{ display: 'block' }}>
|
113
|
+
<TextL>TextL</TextL>
|
114
|
+
<TextL bold>TextL полужирный</TextL>
|
115
|
+
|
116
|
+
<TextM>TextM</TextM>
|
117
|
+
<TextM bold>TextM полужирный</TextM>
|
118
|
+
|
119
|
+
<TextS>TextS</TextS>
|
120
|
+
<TextS bold>TextS полужирный</TextS>
|
121
|
+
|
122
|
+
<TextXS>TextXS</TextXS>
|
123
|
+
<TextXS bold>TextXS полужирный</TextXS>
|
124
|
+
</div>
|
125
|
+
);
|
126
|
+
}
|
127
|
+
```
|
@@ -0,0 +1,97 @@
|
|
1
|
+
---
|
2
|
+
id: avatar
|
3
|
+
title: Avatar
|
4
|
+
---
|
5
|
+
|
6
|
+
import { PropsTable, Description } from '@site/src/components';
|
7
|
+
|
8
|
+
# Avatar
|
9
|
+
<Description name="Avatar" />
|
10
|
+
<PropsTable name="Avatar" exclude={['css']} />
|
11
|
+
|
12
|
+
|
13
|
+
## Примеры
|
14
|
+
|
15
|
+
### Размер аватара
|
16
|
+
Размер задается с помощью свойства `size`. Возможные значения свойства: `"xxl"`, `"l"`, `"m"`, `"s"`, `"fit"`.
|
17
|
+
|
18
|
+
```tsx live
|
19
|
+
import React from 'react';
|
20
|
+
import { Avatar } from '@salutejs/{{ package }}';
|
21
|
+
|
22
|
+
export function App() {
|
23
|
+
return (
|
24
|
+
<>
|
25
|
+
<Avatar size="xxl" url="https://avatars.githubusercontent.com/u/1813468?v=4" />
|
26
|
+
<Avatar size="l" url="https://avatars.githubusercontent.com/u/1813468?v=4" />
|
27
|
+
<Avatar size="m" url="https://avatars.githubusercontent.com/u/1813468?v=4" />
|
28
|
+
<Avatar size="s" url="https://avatars.githubusercontent.com/u/1813468?v=4" />
|
29
|
+
</>
|
30
|
+
);
|
31
|
+
}
|
32
|
+
```
|
33
|
+
|
34
|
+
### Инициалы вместо фотографии
|
35
|
+
Инициалы можно задать с помощью свойства `name`. Желательный формат строки - "Имя Фамилия". Также не должно быть свойства url.
|
36
|
+
|
37
|
+
```tsx live
|
38
|
+
import React from 'react';
|
39
|
+
import { Avatar } from '@salutejs/{{ package }}';
|
40
|
+
|
41
|
+
export function App() {
|
42
|
+
return (
|
43
|
+
<>
|
44
|
+
<Avatar name="Иван Фадеев" />
|
45
|
+
</>
|
46
|
+
);
|
47
|
+
}
|
48
|
+
```
|
49
|
+
|
50
|
+
### Статус аватара
|
51
|
+
Статус задается с помощью свойства `status`. Возможные значения: `"active"`, `"inactive"`.
|
52
|
+
|
53
|
+
```tsx live
|
54
|
+
import React from 'react';
|
55
|
+
import { Avatar } from '@salutejs/{{ package }}';
|
56
|
+
|
57
|
+
export function App() {
|
58
|
+
return (
|
59
|
+
<>
|
60
|
+
<Avatar status="active" name="Иван Фадеев" />
|
61
|
+
<Avatar status="inactive" name="Иван Фадеев" />
|
62
|
+
</>
|
63
|
+
);
|
64
|
+
}
|
65
|
+
```
|
66
|
+
|
67
|
+
### Увеличение при наведении
|
68
|
+
Опциональное свойство `"isScalable"`.
|
69
|
+
|
70
|
+
```tsx live
|
71
|
+
import React from 'react';
|
72
|
+
import { Avatar } from '@salutejs/{{ package }}';
|
73
|
+
|
74
|
+
export function App() {
|
75
|
+
return (
|
76
|
+
<>
|
77
|
+
<Avatar isScalable name="Иван Фадеев" />
|
78
|
+
</>
|
79
|
+
);
|
80
|
+
}
|
81
|
+
```
|
82
|
+
|
83
|
+
### Доступность
|
84
|
+
Добавляем `"role"` и `"tabIndex"`.
|
85
|
+
|
86
|
+
```tsx live
|
87
|
+
import React from 'react';
|
88
|
+
import { Avatar } from '@salutejs/{{ package }}';
|
89
|
+
|
90
|
+
export function App() {
|
91
|
+
return (
|
92
|
+
<>
|
93
|
+
<Avatar role="button" tabIndex="0" name="Иван Фадеев" />
|
94
|
+
</>
|
95
|
+
);
|
96
|
+
}
|
97
|
+
```
|