@salutejs/plasma-new-hope 0.66.0-canary.1107.8441154681.0 → 0.66.1-canary.1128.8446493855.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. package/package.json +2 -2
  2. package/styled-components/cjs/components/Avatar/Avatar.template-doc.mdx +97 -0
  3. package/styled-components/cjs/components/AvatarGroup/AvatarGroup.template-doc.mdx +29 -0
  4. package/styled-components/cjs/components/Badge/Badge.template-doc.mdx +131 -0
  5. package/styled-components/cjs/components/Button/Button.template-doc.mdx +162 -0
  6. package/styled-components/cjs/components/ButtonGroup/ButtonGroup.template-doc.mdx +123 -0
  7. package/styled-components/cjs/components/Calendar/Calendar.template-doc.mdx +208 -0
  8. package/styled-components/cjs/components/Checkbox/Checkbox.template-doc.mdx +44 -0
  9. package/styled-components/cjs/components/Chip/Chip.template-doc.mdx +90 -0
  10. package/styled-components/cjs/components/Combobox/Combobox.template-doc.mdx +237 -0
  11. package/styled-components/cjs/components/Counter/Counter.template-doc.mdx +76 -0
  12. package/styled-components/cjs/components/Drawer/Drawer.template-doc.mdx +170 -0
  13. package/styled-components/cjs/components/Dropdown/Dropdown.template-doc.mdx +80 -0
  14. package/styled-components/cjs/components/Grid/Grid.template-doc.mdx +142 -0
  15. package/styled-components/cjs/components/Image/Image.template-doc.mdx +26 -0
  16. package/styled-components/cjs/components/Indicator/Indicator.template-doc.mdx +76 -0
  17. package/styled-components/cjs/components/Link/Link.template-doc.mdx +23 -0
  18. package/styled-components/cjs/components/Modal/Modal.template-doc.mdx +56 -0
  19. package/styled-components/cjs/components/Notification/Notification.template-doc.mdx +59 -0
  20. package/styled-components/cjs/components/Overlay/Overlay.template-doc.mdx +10 -0
  21. package/styled-components/cjs/components/Popover/Popover.template-doc.mdx +72 -0
  22. package/styled-components/cjs/components/Popup/Popup.template-doc.mdx +209 -0
  23. package/styled-components/cjs/components/Radiobox/Radiobox.template-doc.mdx +38 -0
  24. package/styled-components/cjs/components/Segment/Segment.template-doc.mdx +61 -0
  25. package/styled-components/cjs/components/Select/Select.template-doc.mdx +115 -0
  26. package/styled-components/cjs/components/Skeleton/Skeleton.template-doc.mdx +103 -0
  27. package/styled-components/cjs/components/Spinner/Spinner.template-doc.mdx +21 -0
  28. package/styled-components/cjs/components/Switch/Switch.template-doc.mdx +24 -0
  29. package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +94 -0
  30. package/styled-components/cjs/components/TextArea/TextArea.template-doc.mdx +88 -0
  31. package/styled-components/cjs/components/TextField/TextField.template-doc.mdx +112 -0
  32. package/styled-components/cjs/components/Toast/Toast.template-doc.mdx +153 -0
  33. package/styled-components/cjs/components/Tooltip/Tooltip.template-doc.mdx +30 -0
  34. package/styled-components/cjs/components/Typography/Typography.template-doc.mdx +127 -0
  35. package/styled-components/es/components/Avatar/Avatar.template-doc.mdx +97 -0
  36. package/styled-components/es/components/AvatarGroup/AvatarGroup.template-doc.mdx +29 -0
  37. package/styled-components/es/components/Badge/Badge.template-doc.mdx +131 -0
  38. package/styled-components/es/components/Button/Button.template-doc.mdx +162 -0
  39. package/styled-components/es/components/ButtonGroup/ButtonGroup.template-doc.mdx +123 -0
  40. package/styled-components/es/components/Calendar/Calendar.template-doc.mdx +208 -0
  41. package/styled-components/es/components/Checkbox/Checkbox.template-doc.mdx +44 -0
  42. package/styled-components/es/components/Chip/Chip.template-doc.mdx +90 -0
  43. package/styled-components/es/components/Combobox/Combobox.template-doc.mdx +237 -0
  44. package/styled-components/es/components/Counter/Counter.template-doc.mdx +76 -0
  45. package/styled-components/es/components/Drawer/Drawer.template-doc.mdx +170 -0
  46. package/styled-components/es/components/Dropdown/Dropdown.template-doc.mdx +80 -0
  47. package/styled-components/es/components/Grid/Grid.template-doc.mdx +142 -0
  48. package/styled-components/es/components/Image/Image.template-doc.mdx +26 -0
  49. package/styled-components/es/components/Indicator/Indicator.template-doc.mdx +76 -0
  50. package/styled-components/es/components/Link/Link.template-doc.mdx +23 -0
  51. package/styled-components/es/components/Modal/Modal.template-doc.mdx +56 -0
  52. package/styled-components/es/components/Notification/Notification.template-doc.mdx +59 -0
  53. package/styled-components/es/components/Overlay/Overlay.template-doc.mdx +10 -0
  54. package/styled-components/es/components/Popover/Popover.template-doc.mdx +72 -0
  55. package/styled-components/es/components/Popup/Popup.template-doc.mdx +209 -0
  56. package/styled-components/es/components/Radiobox/Radiobox.template-doc.mdx +38 -0
  57. package/styled-components/es/components/Segment/Segment.template-doc.mdx +61 -0
  58. package/styled-components/es/components/Select/Select.template-doc.mdx +115 -0
  59. package/styled-components/es/components/Skeleton/Skeleton.template-doc.mdx +103 -0
  60. package/styled-components/es/components/Spinner/Spinner.template-doc.mdx +21 -0
  61. package/styled-components/es/components/Switch/Switch.template-doc.mdx +24 -0
  62. package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +94 -0
  63. package/styled-components/es/components/TextArea/TextArea.template-doc.mdx +88 -0
  64. package/styled-components/es/components/TextField/TextField.template-doc.mdx +112 -0
  65. package/styled-components/es/components/Toast/Toast.template-doc.mdx +153 -0
  66. package/styled-components/es/components/Tooltip/Tooltip.template-doc.mdx +30 -0
  67. package/styled-components/es/components/Typography/Typography.template-doc.mdx +127 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: radiobox
3
+ title: Radiobox
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Radiobox
9
+ <Description name="Radiobox" />
10
+ <PropsTable name="Radiobox" exclude={['css', 'focused']} />
11
+
12
+ ## Использование
13
+ Компонент `Radiobox` может содержать лейбл и описание.
14
+
15
+ По умолчанию, контент внутри лейбла и описания многострочный.
16
+
17
+ Для того чтобы стал однострочным, необходимо использовать свойство `singleLine`(по умолчанию `false`).
18
+
19
+ ```tsx live
20
+ import React from 'react';
21
+ import { Radiobox } from '@salutejs/{{ package }}';
22
+
23
+ export function App() {
24
+ return (
25
+ <Radiobox label="Радиокнопка" description="Описание" defaultChecked />
26
+ );
27
+ }
28
+ ```
29
+
30
+ ## Группа радиокнопок
31
+ Компоненты `Radiobox` следует объединять в `RadioGroup`
32
+ ```tsx live
33
+ <RadioGroup aria-labelledby="radiogroup-title-id">
34
+ <H3 id="radiogroup-title-id">Заголовок</H3>
35
+ <Radiobox name="radio-1" label="Радиокнопка 1" description="Описание 1" defaultChecked />
36
+ <Radiobox name="radio-1" label="Радиокнопка 2" description="Описание 2" />
37
+ </RadioGroup>
38
+ ```
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: segment
3
+ title: Segment
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Segment
9
+ Набор компонентов для создания группы сегментов.
10
+ Структура для сегментов похожа на структуру маркированных списков.
11
+
12
+ ## SegmentGroup
13
+
14
+ <Description name="SegmentGroup" />
15
+ <PropsTable name="SegmentGroup" exclude={['css', 'selectedView']} />
16
+
17
+ ## SegmentItem
18
+
19
+ <Description name="SegmentItem" />
20
+ <PropsTable name="SegmentItem" exclude={['css', 'filledBackground', 'disabled']} />
21
+
22
+ ### Провайдер контекста
23
+
24
+ Оберните в `SegmentProvider` компонент, в котором будут использованы SegmentGroup с SegmentItem.
25
+ Внутри данного провайдера есть доступ к хуку `useSegment`.
26
+
27
+ ```tsx live
28
+ import React, { useState } from 'react';
29
+ import { SegmentGroup, SegmentItem, SegmentProvider } from '@salutejs/{{ package }}';
30
+
31
+ export function App() {
32
+ const items = Array(8).fill(0);
33
+
34
+ const SegmentTemplate = () => {
35
+ const {selectedSegmentItems} = useSegment();
36
+
37
+ return (
38
+ <>
39
+ <div>Выбранные элементы: {selectedSegmentItems.join(', ')}</div>
40
+ <SegmentGroup view='filled' selectionMode='multiple' filledBackground pilled>
41
+ {items.map((_, i) => (
42
+ <SegmentItem
43
+ label={`Label ${i}`}
44
+ value={`label_${i}`}
45
+ key={`label_${i}`}
46
+ view='default'
47
+ pilled
48
+ />
49
+ ))}
50
+ </SegmentGroup>
51
+ </>
52
+ )
53
+ }
54
+
55
+ return (
56
+ <SegmentProvider>
57
+ <SegmentTemplate/>
58
+ </SegmentProvider>
59
+ );
60
+ }
61
+ ```
@@ -0,0 +1,115 @@
1
+ ---
2
+ id: select
3
+ title: Select
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Select
9
+ <Description name="Select" />
10
+ <PropsTable name="Select" />
11
+
12
+ ```tsx live
13
+ import React, { useState } from 'react';
14
+ import { Select } from '@salutejs/{{ package }}';
15
+
16
+ export function App() {
17
+ const items = [
18
+ { value: 'each', label: 'Каждый' },
19
+ { value: 'hunter', label: 'Охотник', isDisabled: true },
20
+ { value: 'wants', label: 'Желает' },
21
+ {
22
+ value: 'toKnow',
23
+ label: 'Знать',
24
+ items: [
25
+ { value: '_fullText', label: 'Каждый охотник желает знать, где сидит фазан' },
26
+ { value: '_thePheasant', label: 'Фазан' },
27
+ { value: '_is', label: 'Сидит' },
28
+ ],
29
+ },
30
+ { value: 'where', label: 'Где' },
31
+ { value: 'is', label: 'Сидит' },
32
+ { value: 'thePheasant', label: 'Фазан' },
33
+ { value: 'fullText', label: 'Каждый охотник желает знать, где сидит фазан' },
34
+ ];
35
+
36
+ const [value, setValue] = useState(null);
37
+
38
+ return (
39
+ <div style=\{{ maxWidth: '20rem' }}>
40
+ <div style=\{{ marginBottom: '1rem' }}>
41
+ <Select
42
+ value={value}
43
+ items={items}
44
+ onChange={(v) => {
45
+ setValue(v);
46
+ }}
47
+ placeholder="Выберите пример"
48
+ helperText="Заполните пример"
49
+ status="success"
50
+ />
51
+ </div>
52
+ <div>
53
+ <Select value={null} items={[]} placeholder="Another select" />
54
+ </div>
55
+ </div>
56
+ );
57
+ }
58
+ ```
59
+
60
+ ### Управление высотой выпадающего меню
61
+ Что бы задать высоту и `scroll` для выпадающего меню можно использовать **props** для компонента `Select`:
62
+ - **listOverflow**
63
+ - **listHeight**
64
+
65
+ > Эти **props** необязательные, если их не указать будет использовано значение - [initial](https://developer.mozilla.org/en-US/docs/Web/CSS/initial)
66
+
67
+ ```tsx live
68
+ import React, { useState, useCallback } from 'react';
69
+ import { Select, Modal, ModalsProvider, H3, Button } from '@salutejs/{{ package }}';
70
+
71
+ export function App() {
72
+ const [value, setValue] = useState(null);
73
+ const [isOpenA, setIsOpenA] = useState(false);
74
+
75
+ const onCloseA = useCallback(() => setIsOpenA(false), []);
76
+
77
+ const items = [
78
+ { value: 'each', label: 'Каждый' },
79
+ { value: 'hunter', label: 'Охотник', isDisabled: true },
80
+ { value: 'wants', label: 'Желает' },
81
+ {
82
+ value: 'toKnow',
83
+ label: 'Знать',
84
+ items: [
85
+ { value: '_fullText', label: 'Каждый охотник желает знать, где сидит фазан' },
86
+ { value: '_thePheasant', label: 'Фазан' },
87
+ { value: '_is', label: 'Сидит' },
88
+ ],
89
+ },
90
+ { value: 'where', label: 'Где' },
91
+ { value: 'is', label: 'Сидит' },
92
+ { value: 'thePheasant', label: 'Фазан' },
93
+ { value: 'fullText', label: 'Каждый охотник желает знать, где сидит фазан' },
94
+ ];
95
+
96
+ return (
97
+ <section>
98
+ <ModalsProvider>
99
+ <Button text="Open modal" onClick={() => setIsOpenA(true)} />
100
+
101
+ <Modal style=\{{ "height": "20rem" }} id="modalA" isOpen={isOpenA} onClose={onCloseA}>
102
+ <H3>Фильтр</H3>
103
+ <Select
104
+ value={value}
105
+ onChange={setValue}
106
+ items={items}
107
+ listHeight={11}
108
+ listOverflow="scroll"
109
+ />
110
+ </Modal>
111
+ </ModalsProvider>
112
+ </section>
113
+ );
114
+ }
115
+ ```
@@ -0,0 +1,103 @@
1
+ ---
2
+ id: skeleton
3
+ title: Skeleton
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Skeleton
9
+ Набор компонентов для создания скелетов загрузки (плейсхолдеров).
10
+
11
+ ## LineSkeleton
12
+ <Description name="LineSkeleton" />
13
+ <PropsTable name="LineSkeleton" />
14
+
15
+ ```tsx live
16
+ import React from 'react';
17
+ import { LineSkeleton } from '@salutejs/{{ package }}';
18
+
19
+ export function App() {
20
+ return (
21
+ <LineSkeleton size="headline3" />
22
+ );
23
+ }
24
+ ```
25
+
26
+ ## RectSkeleton
27
+ <Description name="RectSkeleton" />
28
+ <PropsTable name="RectSkeleton" />
29
+
30
+ ```tsx live
31
+ import React from 'react';
32
+ import { RectSkeleton } from '@salutejs/{{ package }}';
33
+
34
+ export function App() {
35
+ return (
36
+ <RectSkeleton width="12rem" height="8rem" />
37
+ );
38
+ }
39
+ ```
40
+
41
+ ## TextSkeleton
42
+ <Description name="TextSkeleton" />
43
+ <PropsTable name="TextSkeleton" />
44
+
45
+ ```tsx live
46
+ import React from 'react';
47
+ import { TextSkeleton } from '@salutejs/{{ package }}';
48
+
49
+ export function App() {
50
+ return (
51
+ <TextSkeleton size="paragraph1" lines={4} />
52
+ );
53
+ }
54
+ ```
55
+ ## На примере карточки
56
+
57
+ ```tsx live
58
+ import React from 'react';
59
+ import { Button, withSkeleton } from '@salutejs/{{ package }}';
60
+
61
+ export function App() {
62
+ const ButtonSkeleton = withSkeleton(Button);
63
+
64
+ return (
65
+ <ButtonSkeleton
66
+ fullWidth
67
+ text="Загрузка..."
68
+ view="primary"
69
+ size="s"
70
+ scaleOnInteraction={false}
71
+ outlined={false}
72
+ skeleton={true}
73
+ tabIndex={-1}
74
+ />
75
+ );
76
+ }
77
+ ```
78
+
79
+ ## Доступность
80
+ При использование хока `withSkeleton` необходимо воспользоваться атрибутами WAI ARIA. Пример с кнопкой:
81
+
82
+ ```tsx
83
+ import React, { useState } from 'react';
84
+ import { Button } from '@salutejs/{{ package }}';
85
+
86
+ const ButtonSkeleton = withSkeleton<ButtonProps & WithSkeletonProps>(BasicButton);
87
+
88
+ export default function App () {
89
+ const [skeleton, setSkeleton] = useState(false);
90
+
91
+ return (
92
+ <ButtonSkeleton
93
+ type="button"
94
+ text={skeleton ? 'Загрузка' : 'Нажмите'}
95
+ skeleton={skeleton}
96
+ aria-busy={skeleton}
97
+ onClick={() => setSkeleton((prevValue) => !prevValue)}
98
+ />
99
+ );
100
+ }
101
+ ```
102
+
103
+ Таким образом, при `skeleton=true` и `aria-busy=true` скринридер будет оповещать о соответствующем статусе компонента.
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: spinner
3
+ title: Spinner
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Spinner
9
+ <Description name="Spinner" />
10
+ <PropsTable name="Spinner" exclude={['css', 'focused']}/>
11
+
12
+ ```tsx live
13
+ import React from 'react';
14
+ import { Spinner } from '@salutejs/{{ package }}';
15
+
16
+ export function App() {
17
+ return (
18
+ <Spinner size={32} />
19
+ );
20
+ }
21
+ ```
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: switch
3
+ title: Switch
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Switch
9
+ <Description name="Switch" />
10
+ <PropsTable name="Switch" />
11
+
12
+ ## Использование
13
+ Компонент `Switch` может содержать лейбл.
14
+
15
+ ```tsx live
16
+ import React from 'react';
17
+ import { Switch } from '@salutejs/{{ package }}';
18
+
19
+ export function App() {
20
+ return (
21
+ <Switch label="Переключатель" defaultChecked />
22
+ );
23
+ }
24
+ ```
@@ -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
+ ```