@react-ui-org/react-ui 0.52.1 → 0.53.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 (260) hide show
  1. package/CODEOWNERS +23 -0
  2. package/README.md +10 -7
  3. package/dist/react-ui.css +5 -3
  4. package/dist/react-ui.js +1 -1
  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 +0 -5
  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 +0 -5
  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/_inline-field-elements.scss +2 -2
  55. package/src/{lib/theme.scss → theme.scss} +4 -3
  56. package/CONTRIBUTING.md +0 -137
  57. package/dist/lib.development.js +0 -3179
  58. package/dist/lib.js +0 -1
  59. package/public/racom.svg +0 -11
  60. package/src/lib/components/Badge/README.mdx +0 -126
  61. package/src/lib/components/Button/README.mdx +0 -581
  62. package/src/lib/components/Card/README.mdx +0 -326
  63. package/src/lib/components/FormLayout/README.mdx +0 -501
  64. package/src/lib/components/Grid/README.mdx +0 -299
  65. package/src/lib/components/Modal/README.mdx +0 -1360
  66. package/src/lib/components/Modal/_hooks/useModalScrollPrevention.js +0 -35
  67. package/src/lib/components/ScrollView/README.mdx +0 -521
  68. package/src/lib/components/SelectField/README.mdx +0 -693
  69. package/src/lib/components/Table/README.mdx +0 -275
  70. package/src/lib/components/Text/README.mdx +0 -241
  71. package/src/lib/components/TextArea/README.mdx +0 -366
  72. package/src/lib/components/Toolbar/README.mdx +0 -386
  73. package/src/{lib/components → components}/Alert/Alert.scss +0 -0
  74. package/src/{lib/components → components}/Alert/_settings.scss +0 -0
  75. package/src/{lib/components → components}/Alert/_theme.scss +0 -0
  76. package/src/{lib/components → components}/Alert/_tools.scss +0 -0
  77. package/src/{lib/components → components}/Alert/index.js +0 -0
  78. package/src/{lib/components → components}/Badge/index.js +0 -0
  79. package/src/{lib/components → components}/Button/Button.scss +0 -0
  80. package/src/{lib/components → components}/Button/_base.scss +0 -0
  81. package/src/{lib/components → components}/Button/_priorities.scss +0 -0
  82. package/src/{lib/components → components}/Button/_settings.scss +0 -0
  83. package/src/{lib/components → components}/Button/_theme.scss +0 -0
  84. package/src/{lib/components → components}/Button/_tools.scss +0 -0
  85. package/src/{lib/components → components}/Button/helpers/getRootLabelVisibilityClassName.js +0 -0
  86. package/src/{lib/components/_helpers → components/Button/helpers}/getRootPriorityClassName.js +0 -0
  87. package/src/{lib/components → components}/Button/index.js +0 -0
  88. package/src/{lib/components → components}/ButtonGroup/ButtonGroup.scss +0 -0
  89. package/src/{lib/components → components}/ButtonGroup/ButtonGroupContext.js +0 -0
  90. package/src/{lib/components → components}/ButtonGroup/_theme.scss +0 -0
  91. package/src/{lib/components → components}/ButtonGroup/index.js +0 -0
  92. package/src/{lib/components → components}/Card/Card.scss +0 -0
  93. package/src/{lib/components → components}/Card/CardBody.jsx +0 -0
  94. package/src/{lib/components → components}/Card/CardFooter.jsx +0 -0
  95. package/src/{lib/components → components}/Card/_theme.scss +0 -0
  96. package/src/{lib/components → components}/Card/_tools.scss +0 -0
  97. package/src/{lib/components → components}/Card/index.js +0 -0
  98. package/src/{lib/components → components}/CheckboxField/CheckboxField.jsx +0 -0
  99. package/src/{lib/components → components}/CheckboxField/CheckboxField.scss +0 -0
  100. package/src/{lib/components → components}/CheckboxField/index.js +0 -0
  101. package/src/{lib/components → components}/FileInputField/FileInputField.jsx +0 -0
  102. package/src/{lib/components → components}/FileInputField/FileInputField.scss +0 -0
  103. package/src/{lib/components → components}/FileInputField/index.js +0 -0
  104. package/src/{lib/components → components}/FormLayout/FormLayout.scss +0 -0
  105. package/src/{lib/components → components}/FormLayout/FormLayoutContext.js +0 -0
  106. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.jsx +4 -4
  107. package/src/{lib/components → components}/FormLayout/FormLayoutCustomField.scss +0 -0
  108. package/src/{lib/components → components}/FormLayout/_theme.scss +0 -0
  109. package/src/{lib/components → components}/FormLayout/index.js +0 -0
  110. package/src/{lib/components → components}/Grid/Grid.scss +0 -0
  111. package/src/{lib/components → components}/Grid/GridSpan.jsx +0 -0
  112. package/src/{lib/components → components}/Grid/_helpers/generateResponsiveCustomProperties.js +0 -0
  113. package/src/{lib/components → components}/Grid/_settings.scss +0 -0
  114. package/src/{lib/components → components}/Grid/_tools.scss +0 -0
  115. package/src/{lib/components → components}/Grid/index.js +0 -0
  116. package/src/{lib/components → components}/InputGroup/InputGroupContext.js +0 -0
  117. package/src/{lib/components → components}/InputGroup/_theme.scss +0 -0
  118. package/src/{lib/components → components}/InputGroup/index.js +0 -0
  119. package/src/{lib/components → components}/Modal/Modal.scss +0 -0
  120. package/src/{lib/components → components}/Modal/ModalBody.jsx +0 -0
  121. package/src/{lib/components → components}/Modal/ModalBody.scss +0 -0
  122. package/src/{lib/components → components}/Modal/ModalCloseButton.jsx +1 -1
  123. package/src/{lib/components → components}/Modal/ModalCloseButton.scss +0 -0
  124. package/src/{lib/components → components}/Modal/ModalContent.jsx +0 -0
  125. package/src/{lib/components → components}/Modal/ModalContent.scss +0 -0
  126. package/src/{lib/components → components}/Modal/ModalFooter.jsx +0 -0
  127. package/src/{lib/components → components}/Modal/ModalFooter.scss +0 -0
  128. package/src/{lib/components → components}/Modal/ModalHeader.jsx +0 -0
  129. package/src/{lib/components → components}/Modal/ModalHeader.scss +0 -0
  130. package/src/{lib/components → components}/Modal/ModalTitle.jsx +0 -0
  131. package/src/{lib/components → components}/Modal/ModalTitle.scss +0 -0
  132. package/src/{lib/components → components}/Modal/_helpers/getJustifyClassName.js +0 -0
  133. package/src/{lib/components → components}/Modal/_helpers/getPositionClassName.js +0 -0
  134. package/src/{lib/components → components}/Modal/_helpers/getScrollingClassName.js +0 -0
  135. package/src/{lib/components → components}/Modal/_helpers/getSizeClassName.js +0 -0
  136. package/src/{lib/components → components}/Modal/_hooks/useModalFocus.js +0 -0
  137. package/src/{lib/components → components}/Modal/_settings.scss +0 -0
  138. package/src/{lib/components → components}/Modal/_theme.scss +0 -0
  139. package/src/{lib/components → components}/Modal/index.js +0 -0
  140. package/src/{lib/components → components}/Paper/Paper.jsx +0 -0
  141. package/src/{lib/components → components}/Paper/Paper.scss +0 -0
  142. package/src/{lib/components → components}/Paper/_theme.scss +0 -0
  143. package/src/{lib/components → components}/Paper/index.js +0 -0
  144. package/src/{lib/components → components}/Popover/Popover.jsx +0 -0
  145. package/src/{lib/components → components}/Popover/Popover.scss +0 -0
  146. package/src/{lib/components → components}/Popover/PopoverWrapper.jsx +0 -0
  147. package/src/{lib/components → components}/Popover/PopoverWrapper.scss +0 -0
  148. package/src/{lib/components → components}/Popover/_helpers/getRootAlignmentClassName.js +0 -0
  149. package/src/{lib/components → components}/Popover/_helpers/getRootSideClassName.js +0 -0
  150. package/src/{lib/components → components}/Popover/_theme.scss +0 -0
  151. package/src/{lib/components → components}/Popover/index.js +0 -0
  152. package/src/{lib/components → components}/Radio/index.js +0 -0
  153. package/src/{lib/components → components}/ScrollView/ScrollView.scss +0 -0
  154. package/src/{lib/components → components}/ScrollView/_helpers/getElementsPositionDifference.js +0 -0
  155. package/src/{lib/components → components}/ScrollView/_hooks/useLoadResizeHook.js +0 -0
  156. package/src/{lib/components → components}/ScrollView/_hooks/useScrollPositionHook.js +0 -0
  157. package/src/{lib/components → components}/ScrollView/index.js +0 -0
  158. package/src/{lib/components → components}/SelectField/SelectField.jsx +0 -0
  159. package/src/{lib/components → components}/SelectField/SelectField.scss +0 -0
  160. package/src/{lib/components → components}/SelectField/_components/Option/Option.jsx +0 -0
  161. package/src/{lib/components → components}/SelectField/_components/Option/index.js +0 -0
  162. package/src/{lib/components → components}/SelectField/index.js +0 -0
  163. package/src/{lib/components → components}/Table/Table.scss +0 -0
  164. package/src/{lib/components → components}/Table/_components/TableBodyCell/TableBodyCell.jsx +0 -0
  165. package/src/{lib/components → components}/Table/_components/TableBodyCell/index.js +0 -0
  166. package/src/{lib/components → components}/Table/_components/TableCell.scss +0 -0
  167. package/src/{lib/components → components}/Table/_components/TableHeaderCell/index.js +0 -0
  168. package/src/{lib/components → components}/Table/_settings.scss +0 -0
  169. package/src/{lib/components → components}/Table/index.js +0 -0
  170. package/src/{lib/components → components}/Tabs/Tabs.jsx +0 -0
  171. package/src/{lib/components → components}/Tabs/Tabs.scss +0 -0
  172. package/src/{lib/components → components}/Tabs/TabsItem.scss +0 -0
  173. package/src/{lib/components → components}/Tabs/_theme.scss +0 -0
  174. package/src/{lib/components → components}/Tabs/index.js +0 -0
  175. package/src/{lib/components → components}/Text/Text.jsx +0 -0
  176. package/src/{lib/components → components}/Text/Text.scss +0 -0
  177. package/src/{lib/components → components}/Text/_helpers/getRootClampClassName.js +0 -0
  178. package/src/{lib/components → components}/Text/_helpers/getRootHyphensClassName.js +0 -0
  179. package/src/{lib/components → components}/Text/_helpers/getRootWordWrappingClassName.js +0 -0
  180. package/src/{lib/components → components}/Text/index.js +0 -0
  181. package/src/{lib/components → components}/TextArea/TextArea.jsx +0 -0
  182. package/src/{lib/components → components}/TextArea/TextArea.scss +0 -0
  183. package/src/{lib/components → components}/TextArea/index.js +0 -0
  184. package/src/{lib/components → components}/TextField/TextField.jsx +0 -0
  185. package/src/{lib/components → components}/TextField/TextField.scss +0 -0
  186. package/src/{lib/components → components}/TextField/index.js +0 -0
  187. package/src/{lib/components → components}/TextLink/TextLink.jsx +1 -1
  188. /package/src/{lib/components → components}/TextLink/TextLink.scss +0 -0
  189. /package/src/{lib/components → components}/TextLink/_theme.scss +0 -0
  190. /package/src/{lib/components → components}/TextLink/index.js +0 -0
  191. /package/src/{lib/components → components}/Toggle/Toggle.jsx +0 -0
  192. /package/src/{lib/components → components}/Toggle/Toggle.scss +0 -0
  193. /package/src/{lib/components → components}/Toggle/index.js +0 -0
  194. /package/src/{lib/components → components}/Toolbar/Toolbar.jsx +0 -0
  195. /package/src/{lib/components → components}/Toolbar/Toolbar.scss +0 -0
  196. /package/src/{lib/components → components}/Toolbar/ToolbarGroup.jsx +0 -0
  197. /package/src/{lib/components → components}/Toolbar/ToolbarItem.jsx +0 -0
  198. /package/src/{lib/components → components}/Toolbar/_helpers/getJustifyClassName.js +0 -0
  199. /package/src/{lib/components → components}/Toolbar/_theme.scss +0 -0
  200. /package/src/{lib/components → components}/Toolbar/index.js +0 -0
  201. /package/src/{lib/components → components}/_helpers/getRootColorClassName.js +0 -0
  202. /package/src/{lib/components → components}/_helpers/getRootSizeClassName.js +0 -0
  203. /package/src/{lib/components → components}/_helpers/getRootValidationStateClassName.js +0 -0
  204. /package/src/{lib/components → components}/_helpers/isChildrenEmpty.js +0 -0
  205. /package/src/{lib/components → components}/_helpers/resolveContextOrProp.js +0 -0
  206. /package/src/{lib/components → components}/_helpers/transferProps.js +0 -0
  207. /package/src/{lib/foundation.scss → foundation.scss} +0 -0
  208. /package/src/{lib/helpers.scss → helpers.scss} +0 -0
  209. /package/src/{lib/provider → provider}/RUIContext.jsx +0 -0
  210. /package/src/{lib/provider → provider}/index.js +0 -0
  211. /package/src/{lib/provider → provider}/withGlobalProps.jsx +0 -0
  212. /package/src/{lib/styles → styles}/_utilities.scss +0 -0
  213. /package/src/{lib/styles → styles}/elements/_code.scss +0 -0
  214. /package/src/{lib/styles → styles}/elements/_links.scss +0 -0
  215. /package/src/{lib/styles → styles}/elements/_lists.scss +0 -0
  216. /package/src/{lib/styles → styles}/elements/_page.scss +0 -0
  217. /package/src/{lib/styles → styles}/elements/_rulers.scss +0 -0
  218. /package/src/{lib/styles → styles}/elements/_small.scss +0 -0
  219. /package/src/{lib/styles → styles}/generic/_box-sizing.scss +0 -0
  220. /package/src/{lib/styles → styles}/generic/_focus.scss +0 -0
  221. /package/src/{lib/styles → styles}/generic/_forms.scss +0 -0
  222. /package/src/{lib/styles → styles}/generic/_reset.scss +0 -0
  223. /package/src/{lib/styles → styles}/generic/_shared.scss +0 -0
  224. /package/src/{lib/styles → styles}/helpers/_animation.scss +0 -0
  225. /package/src/{lib/styles → styles}/settings/_animations.scss +0 -0
  226. /package/src/{lib/styles → styles}/settings/_breakpoints.scss +0 -0
  227. /package/src/{lib/styles → styles}/settings/_escaped-characters.scss +0 -0
  228. /package/src/{lib/styles → styles}/settings/_form-fields.scss +0 -0
  229. /package/src/{lib/styles → styles}/settings/_forms.scss +0 -0
  230. /package/src/{lib/styles → styles}/settings/_utilities.scss +0 -0
  231. /package/src/{lib/styles → styles}/settings/_z-indexes.scss +0 -0
  232. /package/src/{lib/styles → styles}/theme/_accessibility.scss +0 -0
  233. /package/src/{lib/styles → styles}/theme/_borders.scss +0 -0
  234. /package/src/{lib/styles → styles}/theme/_code.scss +0 -0
  235. /package/src/{lib/styles → styles}/theme/_form-fields.scss +0 -0
  236. /package/src/{lib/styles → styles}/theme/_links.scss +0 -0
  237. /package/src/{lib/styles → styles}/theme/_lists.scss +0 -0
  238. /package/src/{lib/styles → styles}/theme/_page.scss +0 -0
  239. /package/src/{lib/styles → styles}/theme/_spacing.scss +0 -0
  240. /package/src/{lib/styles → styles}/theme/_typography.scss +0 -0
  241. /package/src/{lib/styles → styles}/theme-constants/_breakpoints.scss +0 -0
  242. /package/src/{lib/styles → styles}/theme-constants/_colors.scss +0 -0
  243. /package/src/{lib/styles → styles}/theme-constants/_svg.scss +0 -0
  244. /package/src/{lib/styles → styles}/tools/_accessibility.scss +0 -0
  245. /package/src/{lib/styles → styles}/tools/_breakpoint.scss +0 -0
  246. /package/src/{lib/styles → styles}/tools/_colors.scss +0 -0
  247. /package/src/{lib/styles → styles}/tools/_reset.scss +0 -0
  248. /package/src/{lib/styles → styles}/tools/_scrollbar.scss +0 -0
  249. /package/src/{lib/styles → styles}/tools/_spacing.scss +0 -0
  250. /package/src/{lib/styles → styles}/tools/_string.scss +0 -0
  251. /package/src/{lib/styles → styles}/tools/_svg.scss +0 -0
  252. /package/src/{lib/styles → styles}/tools/_transition.scss +0 -0
  253. /package/src/{lib/styles → styles}/tools/_utilities.scss +0 -0
  254. /package/src/{lib/styles → styles}/tools/form-fields/_box-field-layout.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,366 +0,0 @@
1
- ---
2
- name: TextArea
3
- menu: 'Inputs'
4
- route: /components/text-area
5
- ---
6
-
7
- # TextArea
8
-
9
- TextArea enables users to add longer text to a form.
10
-
11
- import {
12
- Playground,
13
- Props,
14
- } from 'docz'
15
- import { TextArea } from '../..'
16
-
17
- ## Basic Usage
18
-
19
- To implement the TextArea component, you need to import it first:
20
-
21
- ```js
22
- import { TextArea } from '@react-ui-org/react-ui';
23
- ```
24
-
25
- And use it:
26
-
27
- <Playground>
28
- <TextArea label="Your feedback" />
29
- </Playground>
30
-
31
- See [API](#api) for all available options.
32
-
33
- ## General Guidelines
34
-
35
- - Use **short and descriptive labels**, ideally nouns rather than seemingly
36
- polite phrases like _Please enter your message_. Short labels will help your
37
- users accomplish their task faster.
38
-
39
- - Only make the TextArea's label invisible when there is **another visual
40
- clue** to guide users through filling the input. Using the first option as
41
- label is not recommended either — it disappears once user makes their choice.
42
-
43
- - When a short label is not enough, use **help texts to guide users** before
44
- they enter anything.
45
-
46
- - Optionally you can **pre-fill your text fields with a placeholder** to give
47
- users an example of what they're expected to fill in. Just remember the
48
- placeholder disappears once a value is entered so don't put anything important
49
- there. Usually, en example value starting with “Eg.” works best.
50
-
51
- - Use **clear, calm error messages** when there's a problem with what they
52
- entered. Be positive and focus on solutions to make the error message helpful.
53
-
54
- - Ensure the height of a text area **fits within mobile screen sizes.**
55
-
56
- ## Design Variants
57
-
58
- To satisfy the design requirements of your project, all input fields in React UI
59
- come in **two design variants** to choose from: outline and filled. Both can be
60
- further [customized](#theming) with CSS custom properties.
61
-
62
- <Playground>
63
- <TextArea
64
- label="Your feedback"
65
- />
66
- <TextArea
67
- label="Your feedback"
68
- variant="filled"
69
- />
70
- </Playground>
71
-
72
- ## Sizes
73
-
74
- Aside from the default (medium) size, two additional sizes are available: small
75
- and large.
76
-
77
- <Playground>
78
- <TextArea
79
- label="Your feedback"
80
- size="small"
81
- />
82
- <TextArea
83
- label="Your feedback"
84
- />
85
- <TextArea
86
- label="Your feedback"
87
- size="large"
88
- />
89
- <TextArea
90
- label="Your feedback"
91
- size="small"
92
- variant="filled"
93
- />
94
- <TextArea
95
- label="Your feedback"
96
- variant="filled"
97
- />
98
- <TextArea
99
- label="Your feedback"
100
- size="large"
101
- variant="filled"
102
- />
103
- </Playground>
104
-
105
- Full-width fields span the full width of a parent:
106
-
107
- <Playground>
108
- <TextArea
109
- label="Your feedback"
110
- fullWidth
111
- />
112
- <TextArea
113
- label="Your feedback"
114
- variant="filled"
115
- fullWidth
116
- />
117
- </Playground>
118
-
119
- ## Input Size
120
-
121
- The default width of all inputs is 240 px, and it can be
122
- [customized](/customize/theming/overview) with a CSS custom property. However, you
123
- can also **control the size of individual text areas** using the `rows` and
124
- `cols` properties. Additionally, text areas are vertically resizable by users.
125
-
126
- 👉 Remember that the `cols` and `rows` HTML attributes **do not limit on how
127
- many characters** the user can enter. Use the
128
- [`maxlength` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Min_and_max_length)
129
- to achieve that effect.
130
-
131
- <Playground>
132
- <TextArea
133
- label="Your feedback"
134
- cols={50}
135
- rows={6}
136
- />
137
- <TextArea
138
- label="Your feedback"
139
- variant="filled"
140
- cols={50}
141
- rows={6}
142
- />
143
- </Playground>
144
-
145
- ## Invisible Label
146
-
147
- In some cases, it may be convenient to visually hide the field label. The label
148
- remains accessible to assistive technologies.
149
-
150
- While it may be acceptable for login screens with just a few fields or other
151
- simple forms, it's dangerous to hide labels from users in most cases. Keep in
152
- mind you should **provide another visual clue** so users know what to fill into
153
- the input.
154
-
155
- <Playground>
156
- <TextArea
157
- label="Feedback"
158
- isLabelVisible={false}
159
- placeholder="Eg. What I liked the best was…"
160
- />
161
- <TextArea
162
- label="Feedback"
163
- isLabelVisible={false}
164
- variant="filled"
165
- placeholder="Eg. What I liked the best was…"
166
- />
167
- </Playground>
168
-
169
- ## Horizontal Layout
170
-
171
- The default vertical layout is very easy to use and work with. However, there
172
- are situations where horizontal layout suits better — and that's why React UI
173
- supports this kind of layout as well.
174
-
175
- <Playground>
176
- <TextArea
177
- label="Your feedback"
178
- layout="horizontal"
179
- />
180
- <TextArea
181
- label="Your feedback"
182
- layout="horizontal"
183
- variant="filled"
184
- />
185
- <TextArea
186
- label="Your feedback"
187
- layout="horizontal"
188
- fullWidth
189
- />
190
- <TextArea
191
- label="Your feedback"
192
- layout="horizontal"
193
- variant="filled"
194
- fullWidth
195
- />
196
- <TextArea
197
- isLabelVisible={false}
198
- label="Your feedback"
199
- layout="horizontal"
200
- placeholder="Your feedback"
201
- fullWidth
202
- />
203
- <TextArea
204
- isLabelVisible={false}
205
- label="Your feedback"
206
- layout="horizontal"
207
- placeholder="Your feedback"
208
- variant="filled"
209
- fullWidth
210
- />
211
- </Playground>
212
-
213
- ## Help Text
214
-
215
- You may provide an additional help text to clarify how the input should be
216
- filled.
217
-
218
- <Playground>
219
- <TextArea
220
- label="Your feedback"
221
- helpText="Why would you recommend us?"
222
- />
223
- <TextArea
224
- label="Your feedback"
225
- variant="filled"
226
- helpText="Why would you recommend us?"
227
- />
228
- <TextArea
229
- label="Your feedback"
230
- layout="horizontal"
231
- helpText="Why would you recommend us?"
232
- />
233
- <TextArea
234
- label="Your feedback"
235
- layout="horizontal"
236
- helpText="Why would you recommend us?"
237
- variant="filled"
238
- />
239
- <TextArea
240
- label="Your feedback"
241
- layout="horizontal"
242
- helpText="Why would you recommend us?"
243
- fullWidth
244
- />
245
- <TextArea
246
- label="Your feedback"
247
- layout="horizontal"
248
- variant="filled"
249
- helpText="Why would you recommend us?"
250
- fullWidth
251
- />
252
- </Playground>
253
-
254
- ## States
255
-
256
- ### Validation States
257
-
258
- Validation states visually present the result of validation of the input. You
259
- should always **provide a help text for states other than valid** so users know
260
- what happened and what action they should take or what options they have.
261
-
262
- <Playground>
263
- <TextArea
264
- label="Your feedback"
265
- validationState="valid"
266
- validationText="Looks good!"
267
- value="Like that!"
268
- required
269
- />
270
- <TextArea
271
- label="Your feedback"
272
- validationState="warning"
273
- validationText="The feedback should be at least 3 characters long."
274
- value=".."
275
- required
276
- />
277
- <TextArea
278
- label="Your feedback"
279
- validationState="invalid"
280
- validationText="Please share your feedback with us."
281
- required
282
- />
283
- <TextArea
284
- label="Your feedback"
285
- validationState="valid"
286
- validationText="Looks good!"
287
- variant="filled"
288
- value="Like that!"
289
- required
290
- />
291
- <TextArea
292
- label="Your feedback"
293
- validationState="warning"
294
- validationText="The feedback should be at least 3 characters long."
295
- variant="filled"
296
- value=".."
297
- required
298
- />
299
- <TextArea
300
- label="Your feedback"
301
- validationState="invalid"
302
- validationText="Please share your feedback with us."
303
- variant="filled"
304
- required
305
- />
306
- </Playground>
307
-
308
- ### Disabled State
309
-
310
- It's possible to disable the whole input.
311
-
312
- <Playground>
313
- <TextArea
314
- label="Your feedback"
315
- disabled
316
- />
317
- <TextArea
318
- label="Your feedback"
319
- variant="filled"
320
- disabled
321
- />
322
- </Playground>
323
-
324
- ## Forwarding HTML Attributes
325
-
326
- In addition to the options below in the [component's API](#api) section, you
327
- can specify [React synthetic events] or you can **add whatever HTML attribute
328
- you like.** All attributes that don't interfere with the API are forwarded to
329
- the native HTML `<textarea>`. This enables making the component interactive and
330
- to helps to improve its accessibility.
331
-
332
- <Playground>
333
- <TextArea
334
- label="Address"
335
- autoComplete="street-address"
336
- minLength={3}
337
- maxLength={80}
338
- />
339
- <TextArea
340
- label="Address"
341
- variant="filled"
342
- autoComplete="street-address"
343
- minLength={3}
344
- maxLength={80}
345
- />
346
- </Playground>
347
-
348
- 👉 Refer to the MDN reference for the full list of supported attributes of the
349
- [textarea] element.
350
-
351
- ## Forwarding ref
352
-
353
- If you provide [ref], it is forwarded to the native HTML `<textarea>` element.
354
-
355
- ## API
356
-
357
- <Props table of={TextArea} />
358
-
359
- ## Theming
360
-
361
- Head to [Forms Theming](/customize/theming/forms) to see shared form theming
362
- options.
363
-
364
- [React synthetic events]: https://reactjs.org/docs/events.html
365
- [textarea]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes
366
- [ref]: https://reactjs.org/docs/refs-and-the-dom.html