@react-ui-org/react-ui 0.52.0 → 0.53.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. package/CODEOWNERS +23 -0
  2. package/README.md +10 -7
  3. package/dist/react-ui.css +42 -0
  4. package/dist/react-ui.js +1 -0
  5. package/package.json +64 -77
  6. package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
  7. package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
  8. package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
  9. package/src/{lib/components → components}/Badge/Badge.scss +1 -1
  10. package/src/components/Badge/README.md +103 -0
  11. package/src/{lib/components → components}/Button/Button.jsx +1 -1
  12. package/src/components/Button/README.md +580 -0
  13. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
  14. package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
  15. package/src/{lib/components → components}/Card/Card.jsx +1 -1
  16. package/src/components/Card/README.md +314 -0
  17. package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
  18. package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
  19. package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
  20. package/src/components/FormLayout/README.md +462 -0
  21. package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
  22. package/src/components/Grid/README.md +281 -0
  23. package/src/{lib/components → components}/InputGroup/InputGroup.jsx +20 -19
  24. package/src/{lib/components → components}/InputGroup/InputGroup.scss +1 -6
  25. package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +145 -163
  26. package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
  27. package/src/components/Modal/README.md +1090 -0
  28. package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
  29. package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
  30. package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
  31. package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
  32. package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
  33. package/src/{lib/components → components}/Radio/Radio.scss +1 -6
  34. package/src/components/ScrollView/README.md +503 -0
  35. package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
  36. package/src/components/SelectField/README.md +681 -0
  37. package/src/components/Table/README.md +259 -0
  38. package/src/{lib/components → components}/Table/Table.jsx +4 -1
  39. package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  40. package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
  41. package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
  42. package/src/components/Text/README.md +220 -0
  43. package/src/components/TextArea/README.md +359 -0
  44. package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
  45. package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
  46. package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
  47. package/src/components/Toolbar/README.md +359 -0
  48. package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
  49. package/src/components/_helpers/getRootPriorityClassName.js +15 -0
  50. package/src/{lib/index.js → index.js} +6 -0
  51. package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
  52. package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
  53. package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
  54. package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.scss +26 -14
  55. package/src/{lib/styles → styles}/tools/form-fields/_inline-field-elements.scss +2 -2
  56. package/src/{lib/theme.scss → theme.scss} +4 -3
  57. package/CONTRIBUTING.md +0 -137
  58. package/dist/lib.development.js +0 -3179
  59. package/dist/lib.js +0 -1
  60. package/public/racom.svg +0 -11
  61. package/src/lib/components/Badge/README.mdx +0 -126
  62. package/src/lib/components/Button/README.mdx +0 -581
  63. package/src/lib/components/Card/README.mdx +0 -326
  64. package/src/lib/components/FormLayout/README.mdx +0 -501
  65. package/src/lib/components/Grid/README.mdx +0 -299
  66. package/src/lib/components/Modal/README.mdx +0 -1360
  67. package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
  68. package/src/lib/components/ScrollView/README.mdx +0 -521
  69. package/src/lib/components/SelectField/README.mdx +0 -693
  70. package/src/lib/components/Table/README.mdx +0 -275
  71. package/src/lib/components/Text/README.mdx +0 -241
  72. package/src/lib/components/TextArea/README.mdx +0 -366
  73. package/src/lib/components/Toolbar/README.mdx +0 -386
  74. package/src/{lib/components → components}/Alert/Alert.scss +0 -0
  75. package/src/{lib/components → components}/Alert/_settings.scss +0 -0
  76. package/src/{lib/components → components}/Alert/_theme.scss +0 -0
  77. package/src/{lib/components → components}/Alert/_tools.scss +0 -0
  78. package/src/{lib/components → components}/Alert/index.js +0 -0
  79. package/src/{lib/components → components}/Badge/index.js +0 -0
  80. package/src/{lib/components → components}/Button/Button.scss +0 -0
  81. package/src/{lib/components → components}/Button/_base.scss +0 -0
  82. package/src/{lib/components → components}/Button/_priorities.scss +0 -0
  83. package/src/{lib/components → components}/Button/_settings.scss +0 -0
  84. package/src/{lib/components → components}/Button/_theme.scss +0 -0
  85. package/src/{lib/components → components}/Button/_tools.scss +0 -0
  86. package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
  87. package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
  88. package/src/{lib/components → components}/Button/index.js +0 -0
  89. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
  90. package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
  91. package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
  92. package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
  93. package/src/{lib/components → components}/Card/Card.scss +0 -0
  94. package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
  95. package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
  96. package/src/{lib/components → components}/Card/_theme.scss +0 -0
  97. package/src/{lib/components → components}/Card/_tools.scss +0 -0
  98. package/src/{lib/components → components}/Card/index.js +0 -0
  99. package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
  100. package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
  101. package/src/{lib/components → components}/CheckboxField/index.js +0 -0
  102. package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
  103. package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
  104. package/src/{lib/components → components}/FileInputField/index.js +0 -0
  105. package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
  106. package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
  107. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
  108. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
  109. package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
  110. package/src/{lib/components → components}/FormLayout/index.js +0 -0
  111. package/src/{lib/components → components}/Grid/Grid.scss +0 -0
  112. package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
  113. package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
  114. package/src/{lib/components → components}/Grid/_settings.scss +0 -0
  115. package/src/{lib/components → components}/Grid/_tools.scss +0 -0
  116. package/src/{lib/components → components}/Grid/index.js +0 -0
  117. package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
  118. package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
  119. package/src/{lib/components → components}/InputGroup/index.js +0 -0
  120. package/src/{lib/components → components}/Modal/Modal.scss +0 -0
  121. package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
  122. package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
  123. package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
  124. package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
  125. package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
  126. package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
  127. package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
  128. package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
  129. package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
  130. package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
  131. package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
  132. package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
  133. package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
  134. package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
  135. package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
  136. package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
  137. package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
  138. package/src/{lib/components → components}/Modal/_settings.scss +0 -0
  139. package/src/{lib/components → components}/Modal/_theme.scss +0 -0
  140. package/src/{lib/components → components}/Modal/index.js +0 -0
  141. package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
  142. package/src/{lib/components → components}/Paper/Paper.scss +0 -0
  143. package/src/{lib/components → components}/Paper/_theme.scss +0 -0
  144. package/src/{lib/components → components}/Paper/index.js +0 -0
  145. package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
  146. package/src/{lib/components → components}/Popover/Popover.scss +0 -0
  147. package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
  148. package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
  149. package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
  150. package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
  151. package/src/{lib/components → components}/Popover/_theme.scss +0 -0
  152. package/src/{lib/components → components}/Popover/index.js +0 -0
  153. package/src/{lib/components → components}/Radio/index.js +0 -0
  154. package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
  155. package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
  156. package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
  157. package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
  158. package/src/{lib/components → components}/ScrollView/index.js +0 -0
  159. package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
  160. package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
  161. package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
  162. package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
  163. package/src/{lib/components → components}/SelectField/index.js +0 -0
  164. package/src/{lib/components → components}/Table/Table.scss +0 -0
  165. package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
  166. package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
  167. package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
  168. package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
  169. package/src/{lib/components → components}/Table/_settings.scss +0 -0
  170. package/src/{lib/components → components}/Table/index.js +0 -0
  171. package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
  172. package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
  173. package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
  174. package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
  175. package/src/{lib/components → components}/Tabs/index.js +0 -0
  176. package/src/{lib/components → components}/Text/Text.jsx +0 -0
  177. package/src/{lib/components → components}/Text/Text.scss +0 -0
  178. package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
  179. package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
  180. package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
  181. package/src/{lib/components → components}/Text/index.js +0 -0
  182. package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
  183. package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
  184. package/src/{lib/components → components}/TextArea/index.js +0 -0
  185. package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
  186. package/src/{lib/components → components}/TextField/TextField.scss +0 -0
  187. package/src/{lib/components → components}/TextField/index.js +0 -0
  188. package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
  189. /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
  190. /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
  191. /package/src/{lib/components → components}/TextLink/index.js +0 -0
  192. /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
  193. /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
  194. /package/src/{lib/components → components}/Toggle/index.js +0 -0
  195. /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
  196. /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
  197. /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
  198. /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
  199. /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
  200. /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
  201. /package/src/{lib/components → components}/Toolbar/index.js +0 -0
  202. /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
  203. /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
  204. /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
  205. /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
  206. /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
  207. /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
  208. /package/src/{lib/foundation.scss → foundation.scss} +0 -0
  209. /package/src/{lib/helpers.scss → helpers.scss} +0 -0
  210. /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
  211. /package/src/{lib/provider → provider}/index.js +0 -0
  212. /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
  213. /package/src/{lib/styles → styles}/_utilities.scss +0 -0
  214. /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
  215. /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
  216. /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
  217. /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
  218. /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
  219. /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
  220. /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
  221. /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
  222. /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
  223. /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
  224. /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
  225. /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
  226. /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
  227. /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
  228. /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
  229. /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
  230. /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
  231. /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
  232. /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
  233. /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
  234. /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
  235. /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
  236. /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
  237. /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
  238. /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
  239. /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
  240. /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
  241. /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
  242. /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
  243. /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
  244. /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
  245. /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
  246. /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
  247. /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
  248. /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
  249. /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
  250. /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
  251. /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
  252. /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
  253. /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
  254. /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
  255. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
  256. /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
  257. /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
  258. /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
  259. /package/src/{lib/translations → translations}/en.js +0 -0
  260. /package/src/{lib/utils → utils}/classNames.js +0 -0
@@ -1,581 +0,0 @@
1
- ---
2
- name: Button
3
- menu: 'Actions'
4
- route: /components/button
5
- ---
6
-
7
- # Button
8
-
9
- import {
10
- Playground,
11
- Props,
12
- } from 'docz'
13
- import Icon from '../../../docs/_components/Icon'
14
- import Placeholder from '../../../docs/_components/Placeholder'
15
- import {
16
- Badge,
17
- Button,
18
- } from '../..'
19
-
20
- Buttons allow users to take actions.
21
-
22
- ## Basic Usage
23
-
24
- To implement the Button component, you need to import it first:
25
-
26
- ```js
27
- import { Button } from '@react-ui-org/react-ui';
28
- ```
29
-
30
- And use it:
31
-
32
- <Playground>
33
- <Button label="My button" />
34
- </Playground>
35
-
36
- See [API](#api) for all available options.
37
-
38
- ## General Guidelines
39
-
40
- - Use **short yet comprehensible labels** to make buttons fit small screens.
41
-
42
- - Since buttons are there to take actions, **use a verb** to make it obvious
43
- what your buttons do.
44
-
45
- - **Don't overwhelm your UI** with too many high-emphasis actions. There should
46
- always be one but chances are that having more of them is not necessary.
47
-
48
- ## Priorities
49
-
50
- There are three **visual priorities** of buttons to choose from, from highest to
51
- lowest:
52
-
53
- 1. filled
54
- 2. outline
55
- 3. flat
56
-
57
- All priorities come in supported
58
- [component colors](/foundation/colors#component-colors).
59
-
60
- ### Filled
61
-
62
- The default, high-emphasis priority should be used for primary actions of your
63
- app. Use it sparingly but remember there should always be one on a screen.
64
-
65
- <Playground>
66
- <Button label="Primary" />
67
- <Button label="Secondary" color="secondary" />
68
- <Button label="Selected" color="selected" />
69
- <Button label="Success" color="success" />
70
- <Button label="Warning" color="warning" />
71
- <Button label="Danger" color="danger" />
72
- <Button label="Help" color="help" />
73
- <Button label="Info" color="info" />
74
- <Button label="Note" color="note" />
75
- <Placeholder dark inline>
76
- <Button label="Light" color="light" />
77
- </Placeholder>
78
- <Button label="Dark" color="dark" />
79
- </Playground>
80
-
81
- Default, unconfigured button comes in **medium** size, **filled** visual
82
- priority, and **primary** color variant.
83
-
84
- ### Outline
85
-
86
- Medium-emphasis buttons. They are designed to contain actions that are
87
- important but not primary in your app.
88
-
89
- <Playground>
90
- <Button priority="outline" label="Primary" />
91
- <Button priority="outline" label="Secondary" color="secondary" />
92
- <Button priority="outline" label="Selected" color="selected" />
93
- <Button priority="outline" label="Success" color="success" />
94
- <Button priority="outline" label="Warning" color="warning" />
95
- <Button priority="outline" label="Danger" color="danger" />
96
- <Button priority="outline" label="Help" color="help" />
97
- <Button priority="outline" label="Info" color="info" />
98
- <Button priority="outline" label="Note" color="note" />
99
- <Placeholder dark inline>
100
- <Button priority="outline" label="Light" color="light" />
101
- </Placeholder>
102
- <Button priority="outline" label="Dark" color="dark" />
103
- </Playground>
104
-
105
- ### Flat
106
-
107
- Flat buttons are designed for less pronounced actions to help maintain focus on
108
- the content.
109
-
110
- <Playground>
111
- <Button priority="flat" label="Primary" />
112
- <Button priority="flat" label="Secondary" color="secondary" />
113
- <Button priority="flat" label="Selected" color="selected" />
114
- <Button priority="flat" label="Success" color="success" />
115
- <Button priority="flat" label="Warning" color="warning" />
116
- <Button priority="flat" label="Danger" color="danger" />
117
- <Button priority="flat" label="Help" color="help" />
118
- <Button priority="flat" label="Info" color="info" />
119
- <Button priority="flat" label="Note" color="note" />
120
- <Placeholder dark inline>
121
- <Button priority="flat" label="Light" color="light" />
122
- </Placeholder>
123
- <Button priority="flat" label="Dark" color="dark" />
124
- </Playground>
125
-
126
- ## Sizes
127
-
128
- Aside from the default (medium) size, two additional sizes are available: small
129
- and large.
130
-
131
- <Playground>
132
- <Button label="Small" size="small" />
133
- <Button label="Medium" />
134
- <Button label="Large" size="large" />
135
- </Playground>
136
-
137
- Block buttons span the full width of a parent:
138
-
139
- <Playground>
140
- <Button label="Block button" block />
141
- </Playground>
142
-
143
- ## Buttons with Icons
144
-
145
- To improve clarity or to draw attention to the action, icons can be added
146
- before or after the button's label.
147
-
148
- 👉 Please note there are no icons pre-packed in React UI. Visit
149
- [Icons](/foundation/icons) to see how to include them.
150
-
151
- <Playground>
152
- <Button
153
- label="Icon before label"
154
- beforeLabel={<Icon icon="star" />}
155
- />
156
- <Button
157
- label="Icon after label"
158
- afterLabel={<Icon icon="star" />}
159
- />
160
- </Playground>
161
-
162
- ### Icon Buttons
163
-
164
- For clear and simple actions, buttons can visually consist just of an icon.
165
- Label remains mandatory to keep the button accessible.
166
-
167
- <Playground>
168
- <Button
169
- label="Icon button"
170
- labelVisibility="none"
171
- beforeLabel={<Icon icon="pencil" />}
172
- />
173
- </Playground>
174
-
175
- Icon buttons can optionally enhance on a [breakpoint](/foundation/breakpoints)
176
- of your choice and display label once you know there is enough room for it.
177
-
178
- 📐 Try resizing your browser to see how label visibility changes.
179
-
180
- <Playground>
181
- <Button
182
- label="Label visible from sm up"
183
- labelVisibility="sm"
184
- beforeLabel={<Icon icon="pencil" />}
185
- />
186
- <Button
187
- label="Label visible from md up"
188
- labelVisibility="md"
189
- beforeLabel={<Icon icon="pencil" />}
190
- />
191
- <Button
192
- label="Label visible from lg up"
193
- labelVisibility="lg"
194
- beforeLabel={<Icon icon="pencil" />}
195
- />
196
- <Button
197
- label="Label visible from xl up"
198
- labelVisibility="xl"
199
- beforeLabel={<Icon icon="pencil" />}
200
- />
201
- <Button
202
- label="Label visible from x2l up"
203
- labelVisibility="x2l"
204
- beforeLabel={<Icon icon="pencil" />}
205
- />
206
- <Button
207
- label="Label visible from x3l up"
208
- labelVisibility="x3l"
209
- beforeLabel={<Icon icon="pencil" />}
210
- />
211
- </Playground>
212
-
213
- ## Buttons with Badges
214
-
215
- A [Badge](/components/badge) can be added to buttons to provide additional
216
- information or to draw user's attention.
217
-
218
- <Playground>
219
- <Button
220
- label="Badge before"
221
- beforeLabel={<Badge label={3} priority="outline" color="light" />}
222
- />
223
- <Button
224
- label="Badge before, on top"
225
- startCorner={<Badge label={3} />}
226
- />
227
- <Button
228
- label="Badge after, on top"
229
- endCorner={<Badge label={3} />}
230
- priority="outline"
231
- />
232
- <Button
233
- label="Badge after"
234
- afterLabel={<Badge label="new" color="warning" />}
235
- priority="outline"
236
- />
237
- </Playground>
238
-
239
- ### Icon Buttons with a Badge
240
-
241
- Badges play nicely with icon buttons, too:
242
-
243
- <Playground>
244
- <Button
245
- label="Icon button with badge"
246
- labelVisibility="none"
247
- priority="outline"
248
- beforeLabel={<Icon icon="warning-sign" />}
249
- startCorner={<Badge label={3} color="warning" />}
250
- />
251
- <Button
252
- label="Icon button with badge"
253
- labelVisibility="md"
254
- priority="outline"
255
- beforeLabel={<Icon icon="warning-sign" />}
256
- startCorner={<Badge label={3} color="danger" />}
257
- />
258
- </Playground>
259
-
260
- ## States
261
-
262
- ### Disabled State
263
-
264
- Disabled state makes the action unavailable.
265
-
266
- <Playground>
267
- <Button label="Disabled filled button" disabled />
268
- <Button label="Disabled outline button" priority="outline" disabled />
269
- <Button label="Disabled flat button" priority="flat" disabled />
270
- </Playground>
271
-
272
- ### Feedback State
273
-
274
- When user's action triggers an asynchronous process on background, the button's
275
- feedback state (not to be mistaken with
276
- [feedback colors](/foundation/colors#component-colors)) can be indicated by
277
- showing an icon. The icon replaces button's label while retaining original
278
- dimensions of the button. Buttons in feedback state are automatically disabled
279
- to prevent unwanted interaction.
280
-
281
- Filled buttons in feedback state:
282
-
283
- <Playground>
284
- <Button
285
- label="Success"
286
- color="success"
287
- feedbackIcon={<Icon icon="success" />}
288
- />
289
- <Button
290
- label="Success"
291
- labelVisibility="none"
292
- color="success"
293
- feedbackIcon={<Icon icon="success" />}
294
- endCorner={<Badge color="danger" label={3} />}
295
- />
296
- <Placeholder dark inline>
297
- <Button
298
- label="Light"
299
- color="light"
300
- feedbackIcon={<Icon icon="success" />}
301
- />
302
- </Placeholder>
303
- <Button
304
- label="Dark"
305
- color="dark"
306
- feedbackIcon={<Icon icon="success" />}
307
- />
308
- <Button
309
- label="Primary"
310
- feedbackIcon={(
311
- <span className="d-inline-flex animation-spin-counterclockwise">
312
- <Icon icon="loading" />
313
- </span>
314
- )}
315
- />
316
- </Playground>
317
-
318
- Outline buttons in feedback state:
319
-
320
- <Playground>
321
- <Button
322
- label="Success"
323
- priority="outline"
324
- color="success"
325
- feedbackIcon={<Icon icon="success" />}
326
- />
327
- <Button
328
- label="Success"
329
- labelVisibility="none"
330
- priority="outline"
331
- color="success"
332
- feedbackIcon={<Icon icon="success" />}
333
- endCorner={<Badge color="danger" label={3} />}
334
- />
335
- <Placeholder dark inline>
336
- <Button
337
- label="Light"
338
- priority="outline"
339
- color="light"
340
- feedbackIcon={<Icon icon="success" />}
341
- />
342
- </Placeholder>
343
- <Button
344
- label="Dark"
345
- priority="outline"
346
- color="dark"
347
- feedbackIcon={<Icon icon="success" />}
348
- />
349
- <Button
350
- label="Primary"
351
- priority="outline"
352
- feedbackIcon={(
353
- <span className="d-inline-flex animation-spin-counterclockwise">
354
- <Icon icon="loading" />
355
- </span>
356
- )}
357
- />
358
- </Playground>
359
-
360
- Flat buttons in feedback state:
361
-
362
- <Playground>
363
- <Button
364
- label="Success"
365
- priority="flat"
366
- color="success"
367
- feedbackIcon={<Icon icon="success" />}
368
- />
369
- <Button
370
- label="Success"
371
- labelVisibility="none"
372
- priority="flat"
373
- color="success"
374
- feedbackIcon={<Icon icon="success" />}
375
- endCorner={<Badge color="danger" label={3} />}
376
- />
377
- <Placeholder dark inline>
378
- <Button
379
- label="Light"
380
- priority="flat"
381
- color="light"
382
- feedbackIcon={<Icon icon="success" />}
383
- />
384
- </Placeholder>
385
- <Button
386
- label="Dark"
387
- priority="flat"
388
- color="dark"
389
- feedbackIcon={<Icon icon="success" />}
390
- />
391
- <Button
392
- label="Primary"
393
- priority="flat"
394
- feedbackIcon={(
395
- <span className="d-inline-flex animation-spin-counterclockwise">
396
- <Icon icon="loading" />
397
- </span>
398
- )}
399
- />
400
- </Playground>
401
-
402
- 👉 Visit the [CSS Helpers](/css-helpers/animation) section to see how the icon
403
- animation is made.
404
-
405
- ## Forwarding HTML Attributes
406
-
407
- In addition to the options below in the [component's API](#api) section, you
408
- can specify [React synthetic events] or **any HTML attribute you like.** All
409
- attributes that don't interfere with the API are forwarded to the native HTML
410
- `<button>`. This enables making the component interactive and helps to improve
411
- its accessibility.
412
-
413
- 👉 Refer to the MDN reference for the full list of supported attributes of the
414
- [button] element.
415
-
416
- ## Forwarding ref
417
-
418
- If you provide [ref], it is forwarded to the native HTML `<button>` element.
419
-
420
- ## API
421
-
422
- <Props table of={Button} />
423
-
424
- ## Theming
425
-
426
- ### Common Theming Options
427
-
428
- | Custom Property | Description |
429
- |--------------------------------|----------------------------------------------|
430
- | `--rui-Button__font-weight` | Font weight |
431
- | `--rui-Button__text-transform` | Text transform, e.g. uppercase or small-caps |
432
- | `--rui-Button__letter-spacing` | Spacing between letters |
433
- | `--rui-Button__border-width` | Border width |
434
- | `--rui-Button__border-radius` | Corner radius |
435
-
436
- ### Theming Priorities and Color Variants
437
-
438
- It's possible to adjust the theme for specific priority, color variant, and
439
- state. Naming convention looks as follows:
440
-
441
- `--rui-Button--<PRIORITY>--<COLOR>--<INTERACTION STATE>__<PROPERTY>`
442
-
443
- Where:
444
-
445
- - `<PRIORITY>` is one of `filled`, `outline`, or `flat` (see
446
- [Priorities](#priorities) and [API](#api)),
447
- - `<COLOR>` is one of supported
448
- [component colors](/foundation/colors#component-colors)
449
- (see color variants of [each priority](#priorities) and [API](#api)),
450
- - `<INTERACTION STATE>` is one of `default`, `hover`, `active`, or `disabled`
451
- (the last one being optional),
452
- - `<PROPERTY>` is one of:
453
- - `color`, `border-color`, `background`, or `box-shadow` for the `filled`
454
- priority,
455
- - `color`, `border-color`, or `background` for the `outline` priority,
456
- - `color` or `background` for the `flat` priority.
457
-
458
- ### Theming Sizes
459
-
460
- Available sizes can be adjusted as follows:
461
-
462
- `--rui-Button--<SIZE>__<PROPERTY>`
463
-
464
- Where:
465
-
466
- - `<SIZE>` is one of `small`, `medium`, or `large` (see [Sizes](#sizes) and
467
- [API](#api))
468
- - `<PROPERTY>` is one of `height`, `padding-x`, `padding-y`, or `font-size`
469
-
470
- 👉 Button sizes are linked to
471
- [box field sizes](/customize/theming/forms#box-field-sizes) sizes so they align
472
- nicely when placed in row.
473
-
474
- ### Example Theme
475
-
476
- <Playground>
477
- <style type="text/css">
478
- {`
479
- .example--themed-buttons {
480
- --rui-Button__font-weight: bold;
481
- --rui-Button__letter-spacing: 0.05em;
482
- --rui-Button__text-transform: uppercase;
483
- --rui-Button__border-radius: 0;
484
- --rui-Button--filled--primary--default__box-shadow:
485
- 0.1em 0.1em 0.5em rgba(0, 0, 0, 0.3);
486
- --rui-Button--medium__height: 3rem;
487
- --rui-Button--medium__padding-x: 1.25rem;
488
- --rui-Button--medium__padding-y: 0.25rem;
489
- }
490
- `}
491
- </style>
492
- <Button label="Default filled button" />
493
- <Button label="Default outline button" priority="outline" />
494
- <div className="example example--themed-buttons">
495
- <Button label="Themed filled button" />
496
- <Button label="Themed outline button" priority="outline" />
497
- </div>
498
- </Playground>
499
-
500
- ### Theming Disabled State
501
-
502
- The `disabled` state offers a bit more of design flexibility compared to other
503
- interaction states. Firstly, there are a few common options for this state:
504
-
505
- | Custom Property | Description |
506
- |-----------------------------------|---------------------------------------------|
507
- | `--rui-Button--disabled__opacity` | Opacity of disabled buttons |
508
- | `--rui-Button--disabled__cursor` | Cursor to show on hovering disabled buttons |
509
-
510
- Secondly, it can be further adjusted using priority and color variant specific
511
- options for the disabled state:
512
-
513
- `--rui-Button--<PRIORITY>--<COLOR>--disabled__<PROPERTY>`
514
-
515
- Undefined theming options are inherited from the `default` interaction state.
516
-
517
- Example:
518
-
519
- <Playground>
520
- <style type="text/css">
521
- {`
522
- .example--themed-disabled-buttons {
523
- --rui-Button__border-radius: 0;
524
- --rui-Button--disabled__opacity: 0.4;
525
- --rui-Button--disabled__cursor: default;
526
- --rui-Button--filled--primary--disabled__color: slate;
527
- --rui-Button--filled--primary--disabled__border-color: silver;
528
- --rui-Button--filled--primary--disabled__background: silver;
529
- --rui-Button--filled--success--disabled__color: slate;
530
- --rui-Button--filled--success--disabled__border-color: silver;
531
- --rui-Button--filled--success--disabled__background: silver;
532
- --rui-Button--outline--primary--disabled__color: slate;
533
- --rui-Button--outline--primary--disabled__border-color: silver;
534
- }
535
- `}
536
- </style>
537
- <Button
538
- label="Default filled primary button, disabled"
539
- disabled
540
- />
541
- <Button
542
- label="Default filled success button, disabled"
543
- color="success"
544
- disabled
545
- />
546
- <Button
547
- label="Default outline primary button, disabled"
548
- priority="outline"
549
- disabled
550
- />
551
- <div className="example example--themed-disabled-buttons">
552
- <Button
553
- label="Themed filled primary button, disabled"
554
- disabled
555
- />
556
- <Button
557
- label="Themed filled success button, disabled"
558
- color="success"
559
- disabled
560
- />
561
- <Button
562
- label="Themed outline primary button, disabled"
563
- priority="outline"
564
- disabled
565
- />
566
- </div>
567
- </Playground>
568
-
569
- ### Theming Feedback State
570
-
571
- Similarly to disabled state, opacity and cursor can be set for buttons in
572
- feedback state.
573
-
574
- | Custom Property | Description |
575
- |-----------------------------------|------------------------------------------------------|
576
- | `--rui-Button--feedback__opacity` | Opacity of buttons in feedback state |
577
- | `--rui-Button--feedback__cursor` | Cursor to show on hovering buttons in feedback state |
578
-
579
- [React synthetic events]: https://reactjs.org/docs/events.html
580
- [button]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attributes
581
- [ref]: https://reactjs.org/docs/refs-and-the-dom.html