@salutejs/plasma-new-hope 0.82.0-canary.1203.9113315762.0 → 0.82.1-canary.1210.9126725322.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. package/package.json +2 -2
  2. package/styled-components/cjs/components/Avatar/Avatar.template-doc.mdx +3 -1
  3. package/styled-components/cjs/components/Badge/Badge.template-doc.mdx +9 -9
  4. package/styled-components/cjs/components/Button/Button.template-doc.mdx +8 -9
  5. package/styled-components/cjs/components/Cell/Cell.template-doc.mdx +68 -0
  6. package/styled-components/cjs/components/Checkbox/Checkbox.template-doc.mdx +2 -2
  7. package/styled-components/cjs/components/Chip/Chip.template-doc.mdx +1 -1
  8. package/styled-components/cjs/components/Combobox/Combobox.template-doc.mdx +14 -14
  9. package/styled-components/cjs/components/Counter/Counter.template-doc.mdx +5 -5
  10. package/styled-components/cjs/components/Divider/Divider.template-docs.mdx +57 -0
  11. package/styled-components/cjs/components/Drawer/Drawer.template-doc.mdx +3 -3
  12. package/styled-components/cjs/components/Dropdown/Dropdown.template-doc.mdx +262 -261
  13. package/styled-components/cjs/components/IconButton/IconButton.template-doc.mdx +156 -0
  14. package/styled-components/cjs/components/Image/Image.template-doc.mdx +1 -1
  15. package/styled-components/cjs/components/Link/Link.template-doc.mdx +4 -4
  16. package/styled-components/cjs/components/Modal/Modal.template-doc.mdx +85 -33
  17. package/styled-components/cjs/components/Notification/Notification.template-doc.mdx +1 -2
  18. package/styled-components/cjs/components/Pagination/Pagination.template-doc.mdx +130 -0
  19. package/styled-components/cjs/components/Popover/Popover.template-doc.mdx +3 -3
  20. package/styled-components/cjs/components/Popup/Popup.template-doc.mdx +70 -74
  21. package/styled-components/cjs/components/Progress/Progress.template-doc.mdx +33 -0
  22. package/styled-components/cjs/components/Radiobox/Radiobox.template-doc.mdx +2 -1
  23. package/styled-components/cjs/components/Segment/Segment.template-doc.mdx +2 -2
  24. package/styled-components/cjs/components/Skeleton/Skeleton.template-doc.mdx +4 -4
  25. package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +1 -1
  26. package/styled-components/cjs/components/TextField/TextField.template-doc.mdx +2 -2
  27. package/styled-components/cjs/components/Toolbar/Toolbar.template-doc.mdx +120 -0
  28. package/styled-components/es/components/Avatar/Avatar.template-doc.mdx +3 -1
  29. package/styled-components/es/components/Badge/Badge.template-doc.mdx +9 -9
  30. package/styled-components/es/components/Button/Button.template-doc.mdx +8 -9
  31. package/styled-components/es/components/Cell/Cell.template-doc.mdx +68 -0
  32. package/styled-components/es/components/Checkbox/Checkbox.template-doc.mdx +2 -2
  33. package/styled-components/es/components/Chip/Chip.template-doc.mdx +1 -1
  34. package/styled-components/es/components/Combobox/Combobox.template-doc.mdx +14 -14
  35. package/styled-components/es/components/Counter/Counter.template-doc.mdx +5 -5
  36. package/styled-components/es/components/Divider/Divider.template-docs.mdx +57 -0
  37. package/styled-components/es/components/Drawer/Drawer.template-doc.mdx +3 -3
  38. package/styled-components/es/components/Dropdown/Dropdown.template-doc.mdx +262 -261
  39. package/styled-components/es/components/IconButton/IconButton.template-doc.mdx +156 -0
  40. package/styled-components/es/components/Image/Image.template-doc.mdx +1 -1
  41. package/styled-components/es/components/Link/Link.template-doc.mdx +4 -4
  42. package/styled-components/es/components/Modal/Modal.template-doc.mdx +85 -33
  43. package/styled-components/es/components/Notification/Notification.template-doc.mdx +1 -2
  44. package/styled-components/es/components/Pagination/Pagination.template-doc.mdx +130 -0
  45. package/styled-components/es/components/Popover/Popover.template-doc.mdx +3 -3
  46. package/styled-components/es/components/Popup/Popup.template-doc.mdx +70 -74
  47. package/styled-components/es/components/Progress/Progress.template-doc.mdx +33 -0
  48. package/styled-components/es/components/Radiobox/Radiobox.template-doc.mdx +2 -1
  49. package/styled-components/es/components/Segment/Segment.template-doc.mdx +2 -2
  50. package/styled-components/es/components/Skeleton/Skeleton.template-doc.mdx +4 -4
  51. package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +1 -1
  52. package/styled-components/es/components/TextField/TextField.template-doc.mdx +2 -2
  53. package/styled-components/es/components/Toolbar/Toolbar.template-doc.mdx +120 -0
@@ -0,0 +1,156 @@
1
+ ---
2
+ id: IconButton
3
+ title: IconButton
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # IconButton
9
+ Кнопки могут отображаться в нескольких размерах и цветах, могут содержать иконку.
10
+
11
+ ## IconButton
12
+ <Description name="IconButton" />
13
+ <PropsTable name="IconButton" exclude={['css']} />
14
+
15
+ ## Использование
16
+ Компонент `IconButton` может содержать иконку, которая указывается напрямую через `children`.
17
+
18
+ ```tsx live
19
+ import React from 'react';
20
+ import { IconButton } from '@salutejs/{{ package }}';
21
+ import { IconClose } from '@salutejs/plasma-icons';
22
+
23
+ export function App() {
24
+ return (
25
+ <div>
26
+ <IconButton>
27
+ <IconClose color="inherit" />
28
+ </IconButton>
29
+ </div>
30
+ );
31
+ }
32
+ ```
33
+
34
+ ## Примеры
35
+
36
+ ### Размер кнопки
37
+ Размер кнопки задается с помощью свойства `size`.
38
+
39
+ ```tsx live
40
+ import React from 'react';
41
+ import { IconButton } from '@salutejs/{{ package }}';
42
+ import { IconClose } from '@salutejs/plasma-icons';
43
+
44
+ export function App() {
45
+ return (
46
+ <div>
47
+ <IconButton size="l">
48
+ <IconClose color="inherit" />
49
+ </IconButton>
50
+ <IconButton size="m">
51
+ <IconClose color="inherit" />
52
+ </IconButton>
53
+ <IconButton size="s">
54
+ <IconClose color="inherit" />
55
+ </IconButton>
56
+ <IconButton size="xs">
57
+ <IconClose color="inherit" size="xs" />
58
+ </IconButton>
59
+ </div>
60
+ );
61
+ }
62
+ ```
63
+
64
+ ### Вид кнопки
65
+ Вид кнопки задается с помощью свойства `view`.
66
+
67
+ Возможные значения свойства `view`:
68
+ + `"default"` – по умолчанию;
69
+ + `"secondary"` – вторичная;
70
+ + `"success"` – успешное завершение;
71
+ + `"warning"` – предупреждение;
72
+ + `"critical"` – ошибка;
73
+ + `"clear"` – без цветового сопровождения;
74
+ + `"dark"` – темная;
75
+ + `"black"` – черная;
76
+ + `"white"` – белая.
77
+
78
+ ```tsx live
79
+ import React from 'react';
80
+ import { IconButton } from '@salutejs/{{ package }}';
81
+ import { IconClose } from '@salutejs/plasma-icons';
82
+
83
+ export function App() {
84
+ return (
85
+ <div>
86
+ <IconButton size="s" view="default">
87
+ <IconClose color="inherit" />
88
+ </IconButton>
89
+ <IconButton size="s" view="secondary">
90
+ <IconClose color="inherit" />
91
+ </IconButton>
92
+ <IconButton size="s" view="success">
93
+ <IconClose color="inherit" />
94
+ </IconButton>
95
+ <IconButton size="s" view="warning">
96
+ <IconClose color="inherit" />
97
+ </IconButton>
98
+ <IconButton size="s" view="critical">
99
+ <IconClose color="inherit" />
100
+ </IconButton>
101
+ <IconButton size="s" view="clear">
102
+ <IconClose color="inherit" />
103
+ </IconButton>
104
+ <IconButton size="s" view="dark">
105
+ <IconClose color="inherit" />
106
+ </IconButton>
107
+ <IconButton size="s" view="black">
108
+ <IconClose color="inherit" />
109
+ </IconButton>
110
+ <IconButton size="s" view="white">
111
+ <IconClose color="inherit" />
112
+ </IconButton>
113
+ </div>
114
+ );
115
+ }
116
+ ```
117
+
118
+ ### Границы кнопки
119
+ Границы кнопки задаются с помощью свойства `pin`. Возможные значения свойства `pin`:
120
+ + `square` – обычное скругление;
121
+ + `circle` – сильное скругление;
122
+ + `clear` – нет скругления.
123
+
124
+ ```tsx live
125
+ import React from 'react';
126
+ import { IconButton } from '@salutejs/{{ package }}';
127
+ import { IconClose } from '@salutejs/plasma-icons';
128
+
129
+ export function App() {
130
+ return (
131
+ <div>
132
+ <IconButton pin="square-square">
133
+ <IconClose color="inherit" />
134
+ </IconButton>
135
+ <IconButton pin="square-clear">
136
+ <IconClose color="inherit" />
137
+ </IconButton>
138
+ <IconButton pin="clear-square">
139
+ <IconClose color="inherit" />
140
+ </IconButton>
141
+ <IconButton pin="clear-clear">
142
+ <IconClose color="inherit" />
143
+ </IconButton>
144
+ <IconButton pin="clear-circle">
145
+ <IconClose color="inherit" />
146
+ </IconButton>
147
+ <IconButton pin="circle-clear">
148
+ <IconClose color="inherit" />
149
+ </IconButton>
150
+ <IconButton pin="circle-circle">
151
+ <IconClose color="inherit" />
152
+ </IconButton>
153
+ </div>
154
+ );
155
+ }
156
+ ```
@@ -16,7 +16,7 @@ import { Image } from '@salutejs/{{ package }}';
16
16
  export function App() {
17
17
  return (
18
18
  <Image
19
- src="/web/images/320_320_9.jpg"
19
+ src="/{{ package }}/images/320_320_9.jpg"
20
20
  width="320px"
21
21
  height="320px"
22
22
  alt="Картинка для примера фоном"
@@ -11,13 +11,13 @@ import { PropsTable, Description } from '@site/src/components';
11
11
 
12
12
  ```tsx live
13
13
  import React from 'react';
14
- import { P1, Link } from '@salutejs/{{ package }}';
14
+ import { TextS, Link } from '@salutejs/{{ package }}';
15
15
 
16
16
  export function App() {
17
17
  return (
18
- <P1>
19
- Скачайте <Link href="/" target="_blank">приложение</Link>.
20
- </P1>
18
+ <TextS>
19
+ Скачайте <Link href="/" target="_blank">приложение.</Link>
20
+ </TextS>
21
21
  );
22
22
  }
23
23
  ```
@@ -11,46 +11,98 @@ import { PropsTable, Description } from '@site/src/components';
11
11
 
12
12
  ## Использование
13
13
 
14
- ### Провайдер контекста
15
- Поместите `ModalsProvider` в [корень приложения](../../#корень-приложения) или там, где будете применять модальные окна:
14
+ Перед использованием убедитесь, что `PopupProvider` подключен.
15
+ Компонент Modal во многом схож с Popup, добавляет при этом подложку(`overlay`), а также блокирует scroll и focus.
16
16
 
17
- ```tsx title="index.ts"
18
- import ReactDOM from 'react-dom';
19
- import { ModalsProvider } from '@salutejs/{{ package }}';
17
+ ```tsx live
18
+ import React, { useState } from 'react';
19
+ import { surfaceSolidSecondary } from '@salutejs/{{ vertical }}/tokens';
20
+ import { SSRProvider, Button, Modal, PopupProvider } from '@salutejs/{{ package }}';
20
21
 
21
- import { App } from './App';
22
+ export function App() {
23
+ const [isOpenA, setIsOpenA] = useState(false);
24
+ const [isOpenB, setIsOpenB] = useState(false);
22
25
 
23
- ReactDOM.render(
24
- <ModalsProvider>
25
- <App />
26
- </ModalsProvider>,
27
- document.getElementById('root')
28
- );
26
+ return (
27
+ <SSRProvider>
28
+ <PopupProvider>
29
+ <div style=\{{ height: "300px" }}>
30
+ <div style=\{{ display: 'flex', flexDirection: 'column' }}>
31
+ <Button text="Открыть A" onClick={() => setIsOpenA(true)} />
32
+ </div>
33
+ <Modal
34
+ id="modalA"
35
+ onClose={() => setIsOpenA(false)}
36
+ isOpen={isOpenA}
37
+ placement="center"
38
+ offset={[0, 0]}
39
+ >
40
+ <div style=\{{ background: `${surfaceSolidSecondary}`, padding: "1rem" }}>
41
+ <Button onClick={() => setIsOpenA(false)}>Close</Button>
42
+ <Button text="Открыть B" onClick={() => setIsOpenB(true)} />
43
+ Content
44
+ </div>
45
+ <Modal
46
+ id="modalB"
47
+ onClose={() => setIsOpenB(false)}
48
+ isOpen={isOpenB}
49
+ placement="right"
50
+ offset={[0, 0]}
51
+ >
52
+ <div style=\{{ background: `${surfaceSolidSecondary}`, padding: "1rem" }}>
53
+ <Button onClick={() => setIsOpenB(false)}>Close</Button>
54
+ Content
55
+ </div>
56
+ </Modal>
57
+ </Modal>
58
+ </div>
59
+ </PopupProvider>
60
+ </SSRProvider>
61
+ );
62
+ }
29
63
  ```
30
64
 
31
- ### Вызов модального окна
32
- После подключения `ModalsProvider` поместите компонент `Modal` туда, где необходимо применить модальное окно:
65
+ ## Подключение анимации
66
+ Подключение анимации аналогично тому, как это происходит в `Popup` - через свойство `withAnimation`(управление через `popupClasses`, `modalClasses`).
67
+ Для добавления анимации в оверлей необходимо использовать класс `.modal-overlay` через переменную `modalClasses.overlay` из пакета.
33
68
 
34
- ```tsx live
35
- import React from 'react';
36
- import { Modal, Headline3, P1, Button } from '@salutejs/{{ package }}';
69
+ Пример:
37
70
 
38
- export function App() {
39
- const [isOpen, setIsOpen] = React.useState(false);
71
+ ```tsx
72
+ import styled from 'styled-components';
73
+ import { Modal } from '@salutejs/{{ package }}';
40
74
 
41
- const close = React.useCallback(() => {
42
- setIsOpen(false);
43
- }, []);
75
+ const StyledModal = styled(Modal)`
76
+ && > .${popupClasses.root}, .${modalClasses.overlay} {
77
+ animation: fadeIn 1s forwards;
78
+ }
44
79
 
45
- return (
46
- <div>
47
- <Button text="Открыть модальное окно" onClick={() => setIsOpen(!isOpen)} />
48
- <Modal isOpen={isOpen} onClose={close}>
49
- <Headline3 mb={10}>Модальное окно</Headline3>
50
- <P1>Содержимое модального окна.</P1>
51
- <Button text="Закрыть" onClick={close} />
52
- </Modal>
53
- </div>
54
- );
55
- }
80
+ &&.${popupClasses.endAnimation} .${popupClasses.root} {
81
+ animation: fadeOut 1s forwards;
82
+ }
83
+
84
+ &&.${popupClasses.endAnimation} .${modalClasses.overlay} {
85
+ animation: fadeOut 1s forwards;
86
+ }
87
+
88
+ @keyframes fadeIn {
89
+ from {
90
+ opacity: 0;
91
+ }
92
+
93
+ to {
94
+ opacity: 1;
95
+ }
96
+ }
97
+
98
+ @keyframes fadeOut {
99
+ from {
100
+ opacity: 1;
101
+ }
102
+
103
+ to {
104
+ opacity: 0;
105
+ }
106
+ }
107
+ `;
56
108
  ```
@@ -34,8 +34,7 @@ ReactDOM.render(
34
34
  ```
35
35
 
36
36
  ### Вызов уведомления
37
- После подключения `NotificationsProvider` станет возможен вызов функции `addNotification`,
38
- который приведет к отображению оповещения.
37
+ После подключения `NotificationsProvider` станет возможен вызов функции `addNotification`,который приведет к отображению оповещения.
39
38
  Функция принимает значения свойств компонента `Notification`:
40
39
 
41
40
  ```tsx live
@@ -0,0 +1,130 @@
1
+ ---
2
+ id: pagination
3
+ title: Pagination
4
+ ---
5
+
6
+ import { PropsTable, Description } from '@site/src/components';
7
+
8
+ # Pagination
9
+
10
+ Pagination может отображаться в разных размерах и может содержать select с выбором количества элементов на странице
11
+ и быстрый выбор страницы.
12
+
13
+ ## Pagination
14
+ <Description name="Pagination" />
15
+ <PropsTable name="Pagination" exclude={['css', 'focused']} />
16
+
17
+ ## Использование
18
+ Компонент `Pagination` должен содержать параметр slots. Он обозначает количество кнопок в Pagination.
19
+
20
+ Также компонент имеет параметр hasPerPage, логика работы такова:
21
+
22
+ - если указан только параметр count, то он равен кол-ву страниц
23
+ - если указан параметр hasPerPage или perPage, то count делится на perPage
24
+
25
+ ```tsx live
26
+ import React from 'react';
27
+ import { Pagination } from '@salutejs/{{ package }}';
28
+
29
+ export function App() {
30
+ return (
31
+ <div style=\{{display: "flex", "flex-direction": "column"}}>
32
+ <div>
33
+ <Pagination slots={7} count={200} />
34
+ </div>
35
+ <div>
36
+ <Pagination slots={9} count={200} hasPerPage={true} perPage={20} />
37
+ </div>
38
+ <div>
39
+ <Pagination slots={9} count={200} hasPerPage={true} />
40
+ </div>
41
+ <div>
42
+ <Pagination slots={9} count={200} hasPerPage={false} />
43
+ </div>
44
+ </div>
45
+ );
46
+ }
47
+ ```
48
+
49
+ ## Примеры
50
+
51
+ ### Размер Pagination
52
+ Размер Pagination задается с помощью свойства `size`.
53
+ Возможные значения свойства: `"l"`, `"m"`, `"s"` или `"xs"`:
54
+
55
+ ```tsx live
56
+ import React from 'react';
57
+ import { Pagination } from '@salutejs/{{ package }}';
58
+
59
+ export function App() {
60
+ return (
61
+ <div style=\{{display: "flex", "flex-direction": "column"}}>
62
+ <Pagination size="l" slots={9} count={200} hasPerPage={true} />
63
+ <Pagination size="m" slots={9} count={200} hasPerPage={true} />
64
+ <Pagination size="s" slots={9} count={200} hasPerPage={true} />
65
+ <Pagination size="xs" slots={9} count={200} hasPerPage={true} />
66
+ </div>
67
+ );
68
+ }
69
+ ```
70
+
71
+ ### Вид Pagination
72
+ Вид Pagination задается с помощью свойства `view`. Возможные значения свойства `view`:
73
+ + `"default"` – основная;
74
+ + `"secondary"` – вторичная;
75
+ + `"clear"` – чистая;
76
+
77
+ ```tsx live
78
+ import React from 'react';
79
+ import { Pagination } from '@salutejs/{{ package }}';
80
+
81
+ export function App() {
82
+ return (
83
+ <div style=\{{display: "flex", "flex-direction": "column"}}>
84
+ <Pagination size="xs" view="default" slots={9} count={200} hasPerPage={true} />
85
+ <Pagination size="xs" view="secondary" slots={9} count={200} hasPerPage={true} />
86
+ <Pagination size="xs" view="clear" slots={9} count={200} hasPerPage={true} />
87
+ </div>
88
+ );
89
+ }
90
+ ```
91
+
92
+ ### Вид активной кнопки Pagination
93
+ Вид Pagination задается с помощью свойства `viewCurrentPage`. Возможные значения свойства `viewCurrentPage`:
94
+ + `"default"` – основная;
95
+ + `"secondary"` – вторичная;
96
+ + `"clear"` – чистая;
97
+
98
+ ```tsx live
99
+ import React from 'react';
100
+ import { Pagination } from '@salutejs/{{ package }}';
101
+
102
+ export function App() {
103
+ return (
104
+ <div style=\{{display: "flex", "flex-direction": "column"}}>
105
+ <Pagination size="xs" viewCurrentPage="default" slots={9} count={200} hasPerPage={true} />
106
+ <Pagination size="xs" viewCurrentPage="secondary" slots={9} count={200} hasPerPage={true} />
107
+ <Pagination size="xs" viewCurrentPage="clear" slots={9} count={200} hasPerPage={true} />
108
+ </div>
109
+ );
110
+ }
111
+ ```
112
+
113
+ ### Типы Pagination
114
+ Тип Pagination задается с помощью свойства `type`. Возможные значения свойства `type`:
115
+ + `"default"` – обычная;
116
+ + `"compact"` – компактная;
117
+
118
+ ```tsx live
119
+ import React from 'react';
120
+ import { Pagination } from '@salutejs/{{ package }}';
121
+
122
+ export function App() {
123
+ return (
124
+ <div style=\{{display: "flex", "flex-direction": "column"}}>
125
+ <Pagination size="xs" type="default" slots={9} count={200} hasPerPage={true} />
126
+ <Pagination size="xs" type="compact" slots={9} count={200} hasPerPage={true} />
127
+ </div>
128
+ );
129
+ }
130
+ ```
@@ -12,7 +12,7 @@ import { PropsTable, Description } from '@site/src/components';
12
12
  ```tsx live
13
13
  import React from 'react';
14
14
  import styled from "styled-components";
15
- import { surfaceSolid03 } from "@salutejs/plasma-tokens/brands/{{ theme }}";
15
+ import { surfaceSolidTertiary } from "@salutejs/{{ vertical }}/tokens";
16
16
  import { Popover, Button } from '@salutejs/{{ package }}';
17
17
 
18
18
  export function App() {
@@ -26,7 +26,7 @@ export function App() {
26
26
  position: absolute;
27
27
  width: 0.5rem;
28
28
  height: 0.5rem;
29
- background: ${surfaceSolid03};
29
+ background: ${surfaceSolidTertiary};
30
30
  }
31
31
 
32
32
  &::before {
@@ -37,7 +37,7 @@ export function App() {
37
37
  `;
38
38
 
39
39
  const StyledContent = styled.div`
40
- background: ${surfaceSolid03};
40
+ background: ${surfaceSolidTertiary};
41
41
  padding: 1rem;
42
42
 
43
43
  display: flex;