@react-ui-org/react-ui 0.52.1 → 0.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +10 -7
  2. package/dist/react-ui.css +5 -3
  3. package/dist/react-ui.development.css +11302 -0
  4. package/dist/react-ui.development.js +1588 -0
  5. package/dist/react-ui.js +1 -1
  6. package/package.json +66 -77
  7. package/src/{lib/components → components}/Alert/Alert.jsx +1 -1
  8. package/src/{lib/components/Alert/README.mdx → components/Alert/README.md} +84 -100
  9. package/src/{lib/components → components}/Badge/Badge.jsx +1 -1
  10. package/src/{lib/components → components}/Badge/Badge.scss +1 -1
  11. package/src/components/Badge/README.md +103 -0
  12. package/src/{lib/components → components}/Button/Button.jsx +1 -1
  13. package/src/components/Button/README.md +580 -0
  14. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.jsx +11 -9
  15. package/src/{lib/components/ButtonGroup/README.mdx → components/ButtonGroup/README.md} +128 -134
  16. package/src/{lib/components → components}/Card/Card.jsx +1 -1
  17. package/src/components/Card/README.md +314 -0
  18. package/src/{lib/components/CheckboxField/README.mdx → components/CheckboxField/README.md} +96 -108
  19. package/src/{lib/components/FileInputField/README.mdx → components/FileInputField/README.md} +83 -95
  20. package/src/{lib/components → components}/FormLayout/FormLayout.jsx +4 -4
  21. package/src/components/FormLayout/README.md +462 -0
  22. package/src/{lib/components → components}/Grid/Grid.jsx +2 -2
  23. package/src/components/Grid/README.md +281 -0
  24. package/src/{lib/components → components}/InputGroup/InputGroup.jsx +28 -19
  25. package/src/{lib/components → components}/InputGroup/InputGroup.scss +4 -5
  26. package/src/{lib/components/InputGroup/README.mdx → components/InputGroup/README.md} +162 -165
  27. package/src/{lib/components → components}/Modal/Modal.jsx +6 -6
  28. package/src/components/Modal/README.md +1090 -0
  29. package/src/components/Modal/_hooks/useModalScrollPrevention.js +37 -0
  30. package/src/{lib/components/Paper/README.mdx → components/Paper/README.md} +18 -30
  31. package/src/{lib/components/Popover/README.mdx → components/Popover/README.md} +102 -132
  32. package/src/{lib/components/Radio/README.mdx → components/Radio/README.md} +122 -134
  33. package/src/{lib/components → components}/Radio/Radio.jsx +11 -12
  34. package/src/{lib/components → components}/Radio/Radio.scss +0 -5
  35. package/src/components/ScrollView/README.md +503 -0
  36. package/src/{lib/components → components}/ScrollView/ScrollView.jsx +12 -3
  37. package/src/components/SelectField/README.md +681 -0
  38. package/src/components/Table/README.md +259 -0
  39. package/src/{lib/components → components}/Table/Table.jsx +4 -1
  40. package/src/{lib/components → components}/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  41. package/src/{lib/components/Tabs/README.mdx → components/Tabs/README.md} +117 -134
  42. package/src/{lib/components → components}/Tabs/TabsItem.jsx +3 -3
  43. package/src/components/Text/README.md +220 -0
  44. package/src/components/TextArea/README.md +359 -0
  45. package/src/{lib/components/TextField/README.mdx → components/TextField/README.md} +336 -342
  46. package/src/{lib/components/TextLink/README.mdx → components/TextLink/README.md} +19 -31
  47. package/src/{lib/components/Toggle/README.mdx → components/Toggle/README.md} +98 -110
  48. package/src/components/Toolbar/README.md +359 -0
  49. package/src/{lib/components → components}/Toolbar/_helpers/getAlignClassName.js +12 -4
  50. package/src/components/_helpers/getRootPriorityClassName.js +15 -0
  51. package/src/{lib/index.js → index.js} +6 -0
  52. package/src/{lib/provider → provider}/RUIProvider.jsx +17 -11
  53. package/src/{lib/styles → styles}/tools/_caret.scss +1 -1
  54. package/src/{lib/styles → styles}/tools/form-fields/_box-field-elements.scss +1 -1
  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-layout.scss +0 -0
  256. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-sizes.scss +0 -0
  257. /package/src/{lib/styles → styles}/tools/form-fields/_foundation.scss +0 -0
  258. /package/src/{lib/styles → styles}/tools/form-fields/_inline-field-layout.scss +0 -0
  259. /package/src/{lib/styles → styles}/tools/form-fields/_variants.scss +0 -0
  260. /package/src/{lib/translations → translations}/en.js +0 -0
  261. /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