@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
@@ -0,0 +1,359 @@
1
+ # Toolbar
2
+
3
+ The responsive Toolbar layout is a versatile tool that allows spacing, grouping,
4
+ and aligning inline items.
5
+
6
+ ## Basic Usage
7
+
8
+ To implement the Toolbar component, you need to import it first:
9
+
10
+ ```js
11
+ import { Toolbar, ToolbarItem } from '@react-ui-org/react-ui';
12
+ ```
13
+
14
+ And use it:
15
+
16
+ ```docoff-react-preview
17
+ <Toolbar>
18
+ <ToolbarItem>
19
+ <docoff-placeholder bordered>Toolbar item</docoff-placeholder>
20
+ </ToolbarItem>
21
+ <ToolbarItem>
22
+ <docoff-placeholder bordered>Toolbar item</docoff-placeholder>
23
+ </ToolbarItem>
24
+ <ToolbarItem>
25
+ <docoff-placeholder bordered>Toolbar item</docoff-placeholder>
26
+ </ToolbarItem>
27
+ </Toolbar>
28
+ ```
29
+
30
+ See [API](#api) for all available options.
31
+
32
+ ## General Guidelines
33
+
34
+ - **Toolbar is great for flexible inline layouts.** For stacking your content
35
+ vertically or building two-dimensional layouts head to the [Grid][grid]
36
+ layout.
37
+
38
+ - **Wrap your items** into the ToolbarItem component. This ensures your content
39
+ is properly spaced and aligned with other Toolbar elements. Do **not** try to
40
+ put any custom HTML or React components directly into the Toolbar layout
41
+ without wrapping it with the ToolbarItem first.
42
+
43
+ - **Be careful with using Toolbar with long or dynamic items in narrow
44
+ containers.** Toolbar intentionally prevents its items from shrinking using
45
+ `flex: none` which may cause overflow in case of lack of horizontal space.
46
+ Depending on your situation, consider turning on the `nowrap` option
47
+ (which allows shrinking of items but disables Toolbar from wrapping), using
48
+ the [Text][text] component to precisely control text wrapping, or switching to
49
+ the [Grid][grid] layout.
50
+
51
+ ## Alignment
52
+
53
+ You can tweak your Toolbar layout using rich alignment options, both in
54
+ horizontal and vertical direction.
55
+
56
+ 👉 At the current stage of development, React UI is **RTL aware** so switching
57
+ to a fully RTL-compatible behavior in the future should be painless. That's why
58
+ the justification values are called rather `start` than `left` and `end` instead
59
+ of `right`.
60
+
61
+ ```docoff-react-preview
62
+ React.createElement(() => {
63
+ const [alignment, setAlignment] = React.useState('top');
64
+ const [justification, setJustification] = React.useState('start');
65
+ return (
66
+ <div>
67
+ <Toolbar>
68
+ <ToolbarGroup align="baseline">
69
+ <ToolbarItem>
70
+ <span id="alignment-label">Alignment:</span>
71
+ </ToolbarItem>
72
+ <ToolbarItem>
73
+ <ButtonGroup aria-labelledby="alignment-label" priority="outline">
74
+ <Button
75
+ aria-pressed={alignment === 'top'}
76
+ color={alignment === 'top' ? 'selected' : 'secondary'}
77
+ label="top"
78
+ onClick={() => setAlignment('top')}
79
+ />
80
+ <Button
81
+ aria-pressed={alignment === 'middle'}
82
+ color={alignment === 'middle' ? 'selected' : 'secondary'}
83
+ label="middle"
84
+ onClick={() => setAlignment('middle')}
85
+ />
86
+ <Button
87
+ aria-pressed={alignment === 'bottom'}
88
+ color={alignment === 'bottom' ? 'selected' : 'secondary'}
89
+ label="bottom"
90
+ onClick={() => setAlignment('bottom')}
91
+ />
92
+ <Button
93
+ aria-pressed={alignment === 'baseline'}
94
+ color={alignment === 'baseline' ? 'selected' : 'secondary'}
95
+ label="baseline"
96
+ onClick={() => setAlignment('baseline')}
97
+ />
98
+ </ButtonGroup>
99
+ </ToolbarItem>
100
+ </ToolbarGroup>
101
+ <ToolbarGroup align="baseline">
102
+ <ToolbarItem>
103
+ <span id="justification-label">Justification:</span>
104
+ </ToolbarItem>
105
+ <ToolbarItem>
106
+ <ButtonGroup aria-labelledby="justification-label" priority="outline">
107
+ <Button
108
+ aria-pressed={justification === 'start'}
109
+ color={justification === 'start' ? 'selected' : 'secondary'}
110
+ label="start"
111
+ onClick={() => setJustification('start')}
112
+ />
113
+ <Button
114
+ aria-pressed={justification === 'center'}
115
+ color={justification === 'center' ? 'selected' : 'secondary'}
116
+ label="center"
117
+ onClick={() => setJustification('center')}
118
+ />
119
+ <Button
120
+ aria-pressed={justification === 'end'}
121
+ color={justification === 'end' ? 'selected' : 'secondary'}
122
+ label="end"
123
+ onClick={() => setJustification('end')}
124
+ />
125
+ <Button
126
+ aria-pressed={justification === 'space-between'}
127
+ color={justification === 'space-between' ? 'selected' : 'secondary'}
128
+ label="space-between"
129
+ onClick={() => setJustification('space-between')}
130
+ />
131
+ </ButtonGroup>
132
+ </ToolbarItem>
133
+ </ToolbarGroup>
134
+ </Toolbar>
135
+ <Toolbar align={alignment} justify={justification}>
136
+ <ToolbarItem>
137
+ <docoff-placeholder bordered>First item</docoff-placeholder>
138
+ </ToolbarItem>
139
+ <ToolbarItem>
140
+ <docoff-placeholder bordered>
141
+ Second item<br />
142
+ is taller
143
+ </docoff-placeholder>
144
+ </ToolbarItem>
145
+ <ToolbarItem>
146
+ <docoff-placeholder bordered>Third item</docoff-placeholder>
147
+ </ToolbarItem>
148
+ </Toolbar>
149
+ </div>
150
+ );
151
+ });
152
+ ```
153
+
154
+ ## Groups
155
+
156
+ Toolbar items can be grouped which enables you aligning related items together.
157
+ To provide the best possible flexibility for building your layout, the
158
+ ToolbarGroup allows you to set many options similar to the Toolbar: vertical
159
+ alignment, [dense spacing](#dense-layout), or [disable wrapping](#wrapping).
160
+
161
+ ```docoff-react-preview
162
+ <Toolbar justify="space-between">
163
+ <ToolbarGroup>
164
+ <ToolbarItem>
165
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
166
+ </ToolbarItem>
167
+ <ToolbarItem>
168
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
169
+ </ToolbarItem>
170
+ </ToolbarGroup>
171
+ <ToolbarGroup align="middle">
172
+ <ToolbarItem>
173
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
174
+ </ToolbarItem>
175
+ <ToolbarItem>
176
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
177
+ </ToolbarItem>
178
+ </ToolbarGroup>
179
+ <ToolbarItem>
180
+ <docoff-placeholder bordered>Item</docoff-placeholder>
181
+ </ToolbarItem>
182
+ </Toolbar>
183
+ ```
184
+
185
+ ## Dense Layout
186
+
187
+ Sometimes it's useful to get related items even closer together. This can be
188
+ easily achieved through the `dense` option which can be applied on individual
189
+ toolbar groups, or on the entire toolbar.
190
+
191
+ ```docoff-react-preview
192
+ React.createElement(() => {
193
+ const [isGroupDense, setIsGroupDense] = React.useState(false);
194
+ const [isToolbarDense, setIsToolbarDense] = React.useState(false);
195
+ return (
196
+ <div>
197
+ <Toolbar>
198
+ <ToolbarItem>
199
+ <CheckboxField
200
+ checked={isGroupDense}
201
+ label="Dense ToolbarGroup"
202
+ onChange={(e) => setIsGroupDense(e.target.checked)}
203
+ />
204
+ </ToolbarItem>
205
+ <ToolbarItem>
206
+ <CheckboxField
207
+ checked={isToolbarDense}
208
+ label="Dense Toolbar"
209
+ onChange={(e) => setIsToolbarDense(e.target.checked)}
210
+ />
211
+ </ToolbarItem>
212
+ </Toolbar>
213
+ <Toolbar dense={isToolbarDense}>
214
+ <ToolbarGroup dense={isGroupDense}>
215
+ <ToolbarItem>
216
+ <docoff-placeholder bordered>Group item</docoff-placeholder>
217
+ </ToolbarItem>
218
+ <ToolbarItem>
219
+ <docoff-placeholder bordered>Group item</docoff-placeholder>
220
+ </ToolbarItem>
221
+ </ToolbarGroup>
222
+ <ToolbarItem>
223
+ <docoff-placeholder bordered>Standalone item</docoff-placeholder>
224
+ </ToolbarItem>
225
+ <ToolbarItem>
226
+ <docoff-placeholder bordered>Standalone item</docoff-placeholder>
227
+ </ToolbarItem>
228
+ </Toolbar>
229
+ </div>
230
+ );
231
+ });
232
+ ```
233
+
234
+ ## Wrapping
235
+
236
+ By default, all toolbar items are queued up one after another in a row. The
237
+ items automatically wrap and create a new row. To prevent this behavior, just
238
+ set the `nowrap` option on the Toolbar or on individual ToolbarGroups. Note that
239
+ ToolbarGroups can still wrap when the wrapping is disabled just on their parent
240
+ Toolbar.
241
+
242
+ ```docoff-react-preview
243
+ <p>Disabled wrapping on entire toolbar:</p>
244
+ <Toolbar justify="space-between" nowrap>
245
+ <ToolbarGroup>
246
+ <ToolbarItem>
247
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
248
+ </ToolbarItem>
249
+ <ToolbarItem>
250
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
251
+ </ToolbarItem>
252
+ </ToolbarGroup>
253
+ <ToolbarGroup>
254
+ <ToolbarItem>
255
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
256
+ </ToolbarItem>
257
+ <ToolbarItem>
258
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
259
+ </ToolbarItem>
260
+ </ToolbarGroup>
261
+ <ToolbarItem>
262
+ <docoff-placeholder bordered>Item</docoff-placeholder>
263
+ </ToolbarItem>
264
+ </Toolbar>
265
+ <p>Disabled wrapping on toolbar groups:</p>
266
+ <Toolbar justify="space-between">
267
+ <ToolbarGroup nowrap>
268
+ <ToolbarItem>
269
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
270
+ </ToolbarItem>
271
+ <ToolbarItem>
272
+ <docoff-placeholder bordered>Group A</docoff-placeholder>
273
+ </ToolbarItem>
274
+ </ToolbarGroup>
275
+ <ToolbarGroup nowrap>
276
+ <ToolbarItem>
277
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
278
+ </ToolbarItem>
279
+ <ToolbarItem>
280
+ <docoff-placeholder bordered>Group B</docoff-placeholder>
281
+ </ToolbarItem>
282
+ </ToolbarGroup>
283
+ <ToolbarItem>
284
+ <docoff-placeholder bordered>Item</docoff-placeholder>
285
+ </ToolbarItem>
286
+ </Toolbar>
287
+ ```
288
+
289
+ 👉 Depending on your situation, you may need to further control wrapping of text
290
+ content placed within Toolbar. The [Text][text] component is designed
291
+ specifically for this kind of job.
292
+
293
+ ## Flexible Items
294
+
295
+ Toolbar items can be made flexible to grow and shrink according to the available
296
+ space. This is useful e.g. when you need to combine text with an action:
297
+
298
+ ```docoff-react-preview
299
+ <Toolbar>
300
+ <ToolbarItem flexible>
301
+ <docoff-placeholder bordered>My Headline</docoff-placeholder>
302
+ </ToolbarItem>
303
+ <ToolbarItem>
304
+ <docoff-placeholder bordered>Action</docoff-placeholder>
305
+ </ToolbarItem>
306
+ </Toolbar>
307
+ ```
308
+
309
+ Or to build a classic media layout with image on the left and text on the right:
310
+
311
+ ```docoff-react-preview
312
+ <Toolbar>
313
+ <ToolbarItem>
314
+ <docoff-placeholder bordered>Media object</docoff-placeholder>
315
+ </ToolbarItem>
316
+ <ToolbarItem flexible>
317
+ <docoff-placeholder bordered>Media body</docoff-placeholder>
318
+ </ToolbarItem>
319
+ </Toolbar>
320
+ ```
321
+
322
+ ## Forwarding HTML Attributes
323
+
324
+ In addition to the options below in the [component's API](#api) section, you
325
+ can specify [React synthetic events] or **any HTML attribute you like.** All
326
+ attributes that don't interfere with the API are forwarded to the root `<div>`
327
+ HTML element. This enables making the component interactive and helps to improve
328
+ its accessibility.
329
+
330
+ 👉 Refer to the MDN reference for the full list of supported attributes of the
331
+ [div] element.
332
+
333
+ ## API
334
+
335
+ <docoff-react-props src="/components/Toolbar/Toolbar.jsx"></docoff-react-props>
336
+
337
+ ### ToolbarGroup API
338
+
339
+ A wrapper for grouping ToolbarItems together.
340
+
341
+ <docoff-react-props src="/components/Toolbar/ToolbarGroup.jsx"></docoff-react-props>
342
+
343
+ ### ToolbarItem API
344
+
345
+ A wrapper for individual toolbar items.
346
+
347
+ <docoff-react-props src="/components/Toolbar/ToolbarItem.jsx"></docoff-react-props>
348
+
349
+ ## Theming
350
+
351
+ | Custom Property | Description |
352
+ |------------------------------------------------------|--------------------------------------------------------------|
353
+ | `--rui-Toolbar__gap` | Gap between toolbar items |
354
+ | `--rui-Toolbar__gap--dense` | Dense gap between toolbar items |
355
+
356
+ [grid]: /components/Grid
357
+ [text]: /components/Text
358
+ [React synthetic events]: https://reactjs.org/docs/events.html
359
+ [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
@@ -1,19 +1,27 @@
1
1
  export const getAlignClassName = (value, styles, type) => {
2
2
  if (value === 'top') {
3
- if (type === 'group') return styles.isGroupAlignedToTop;
3
+ if (type === 'group') {
4
+ return styles.isGroupAlignedToTop;
5
+ }
4
6
  return styles.isToolbarAlignedToTop;
5
7
  }
6
8
 
7
9
  if (value === 'middle') {
8
- if (type === 'group') return styles.isGroupAlignedToMiddle;
10
+ if (type === 'group') {
11
+ return styles.isGroupAlignedToMiddle;
12
+ }
9
13
  return styles.isToolbarAlignedToMiddle;
10
14
  }
11
15
 
12
16
  if (value === 'bottom') {
13
- if (type === 'group') return styles.isGroupAlignedToBottom;
17
+ if (type === 'group') {
18
+ return styles.isGroupAlignedToBottom;
19
+ }
14
20
  return styles.isToolbarAlignedToBottom;
15
21
  }
16
22
 
17
- if (type === 'group') return styles.isGroupAlignedToBaseline;
23
+ if (type === 'group') {
24
+ return styles.isGroupAlignedToBaseline;
25
+ }
18
26
  return styles.isToolbarAlignedToBaseline;
19
27
  };
@@ -0,0 +1,15 @@
1
+ export default (priority, styles) => {
2
+ if (priority === 'filled') {
3
+ return styles.isRootPriorityFilled;
4
+ }
5
+
6
+ if (priority === 'outline') {
7
+ return styles.isRootPriorityOutline;
8
+ }
9
+
10
+ if (priority === 'flat') {
11
+ return styles.isRootPriorityFlat;
12
+ }
13
+
14
+ return null;
15
+ };
@@ -1,3 +1,9 @@
1
+ // Global definitions
2
+ // These need to be imported here to be placed in the distribution CSS file
3
+ import './theme.scss';
4
+ import './foundation.scss';
5
+ import './helpers.scss';
6
+
1
7
  // Components
2
8
  export { Alert } from './components/Alert';
3
9
  export { Badge } from './components/Badge';
@@ -1,5 +1,7 @@
1
1
  import PropTypes from 'prop-types';
2
- import React from 'react';
2
+ import React, {
3
+ useMemo,
4
+ } from 'react';
3
5
  import defaultTranslations from '../translations/en';
4
6
  import RUIContext from './RUIContext';
5
7
 
@@ -7,16 +9,20 @@ const RUIProvider = ({
7
9
  children,
8
10
  globalProps,
9
11
  translations,
10
- }) => (
11
- <RUIContext.Provider
12
- value={{
13
- globalProps,
14
- translations,
15
- }}
16
- >
17
- {children}
18
- </RUIContext.Provider>
19
- );
12
+ }) => {
13
+ const childProps = useMemo(() => ({
14
+ globalProps,
15
+ translations,
16
+ }), [globalProps, translations]);
17
+
18
+ return (
19
+ <RUIContext.Provider
20
+ value={childProps}
21
+ >
22
+ {children}
23
+ </RUIContext.Provider>
24
+ );
25
+ };
20
26
 
21
27
  RUIProvider.defaultProps = {
22
28
  children: null,
@@ -6,7 +6,7 @@
6
6
  height: 0.4375rem;
7
7
  border-width: 2px;
8
8
  border-style: none solid solid none;
9
- border-color: currentColor;
9
+ border-color: currentcolor;
10
10
  }
11
11
 
12
12
  @mixin rotate($rotate: 0) {
@@ -7,7 +7,7 @@
7
7
 
8
8
  @use "../../settings/form-fields" as settings;
9
9
  @use "../../theme/form-fields" as theme;
10
- @use "../../tools/caret";
10
+ @use "../caret";
11
11
  @use "../spacing";
12
12
  @use "../transition";
13
13
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  @use "../../theme/typography";
13
13
  @use "../../theme/form-fields" as theme;
14
- @use "../../tools/accessibility";
14
+ @use "../accessibility";
15
15
  @use "../transition";
16
16
 
17
17
  @mixin check-input($type) {
@@ -26,7 +26,7 @@
26
26
  background-size: contain;
27
27
  background-repeat: no-repeat;
28
28
  background-color: var(--rui-local-check-background-color);
29
- color-adjust: exact; // 1.
29
+ print-color-adjust: exact; // 1.
30
30
 
31
31
  &:focus,
32
32
  &:checked:focus {
@@ -4,7 +4,8 @@
4
4
  @use "styles/theme-constants/colors";
5
5
  @use "styles/theme-constants/svg";
6
6
 
7
- :root {
7
+ :root,
8
+ :host {
8
9
  // ============================================================================================ //
9
10
  // GLOBAL TOKENS //
10
11
  // ============================================================================================ //
@@ -717,7 +718,7 @@
717
718
  // ButtonGroup: filled buttons
718
719
  --rui-ButtonGroup--filled__gap: calc(-1 * var(--rui-Button__border-width));
719
720
  --rui-ButtonGroup--filled__separator__width: var(--rui-Button__border-width);
720
- --rui-ButtonGroup--filled__separator__color: currentColor;
721
+ --rui-ButtonGroup--filled__separator__color: currentcolor;
721
722
 
722
723
  // ButtonGroup: outline buttons
723
724
  --rui-ButtonGroup--outline__gap: calc(-1 * var(--rui-Button__border-width));
@@ -727,7 +728,7 @@
727
728
  // ButtonGroup: flat buttons
728
729
  --rui-ButtonGroup--flat__gap: var(--rui-Button__border-width);
729
730
  --rui-ButtonGroup--flat__separator__width: var(--rui-ButtonGroup--flat__gap);
730
- --rui-ButtonGroup--flat__separator__color: currentColor;
731
+ --rui-ButtonGroup--flat__separator__color: currentcolor;
731
732
 
732
733
  //
733
734
  // Card
package/CONTRIBUTING.md DELETED
@@ -1,137 +0,0 @@
1
- ---
2
- name: General Guidelines
3
- route: /contribute/guidelines
4
- menu: Contribute
5
- ---
6
-
7
- # Contributing
8
-
9
- In the first place, thank you for your interest in contributing! 🙏
10
-
11
- ## Development
12
-
13
- To build the project:
14
-
15
- 1. Install local npm packages: `npm install`
16
- 2. Run the build: `npm run build`
17
-
18
- To run the dev server:
19
-
20
- 1. Install local npm packages: `npm install`
21
- 2. Run the dev server (usually on `http://localhost:3000`): `npm start`
22
-
23
- ## Git Workflow
24
-
25
- In order for the automation to work in the best possible way (we use GitHub
26
- Actions), please follow these guidelines:
27
-
28
- 1. **One pull request per subject.** Don't combine unrelated changes in a single
29
- PR unless they are really subtle details such as fix of a typo.
30
-
31
- 2. **Only PRs into `master` branch are listed in changelog.** PRs into other
32
- branches are not picked up by release automation.
33
-
34
- 3. **Name your branches according to nature of change.** Choose one of:
35
-
36
- - `bc/*` for breaking changes
37
- - `feature/*` for features
38
- - `bugfix/*` for bugfixes
39
- - `refactoring/*` for refactoring of the library
40
- - `docs/*` or `documentation/*` for changes in docs
41
- - `maintenance/*` for maintenance (builds, dependencies, automation, etc.)
42
- - `release/*` for [releases](/contribute/releasing) (administrators only)
43
-
44
- 4. **Write clear, helpful and descriptive commit messages.**
45
-
46
- 1. **Use imperative and write in English,** e.g. _Update dependencies_ or
47
- _Claim support for controlled components only_.
48
- 2. **If an issue exists for your changes, append the issue number** in
49
- parentheses to the end of the commit message, e.g. _Update dependencies
50
- (#261)_.
51
- 3. Optionally use Markdown code blocks to emphasize, e.g.
52
- _Create `ScrollView` component (#53)_.
53
-
54
- 5. **Write clear, helpful and descriptive PR names.**
55
-
56
- 1. **All rules for commit messages apply** also for PR names.
57
- 2. **Always check that PR name meets the requirements** above because **PR
58
- names are used in changelog**. GitHub automatically truncates long PR
59
- names and picks up branch name for multi-commit PRs, so it's necessary to
60
- make sure the PR name is what we want to have in the changelog.
61
- 3. **If an issue exists for your changes, append this text to PR
62
- description** (the topmost comment in the PR) in order for the issue to be
63
- closed automatically once the PR is merged: `Closes #<ISSUE NUMBER>`. You
64
- will know the issue is linked correctly when it appears in the _Linked
65
- issues_ section of the PR. (Having the issue mentioned in commit message
66
- and/or PR name does _not_ have this effect.)
67
- 4. **If there is no issue for your changes, please add your PR to `The
68
- Board`** GitHub project in the _Projects_ section of the PR. The correct
69
- board column will be selected automatically. This helps us keep track of
70
- what is in development.
71
-
72
- Pull requests are labelled automatically. You can add more labels to better
73
- qualify the nature of the change — in such case, it will be included in all
74
- corresponding changelog groups. Or use the `skip changelog` label to exclude a
75
- pull request from the changelog.
76
-
77
- ## Package Linking
78
-
79
- The best way for development of React UI is to link `react-ui` into your
80
- application with `npm link` so you can see it in action.
81
-
82
- 1. In React UI repository, run `npm link`
83
- 2. In your application, run `npm link @react-ui-org/react-ui`
84
-
85
- To prevent
86
- [Invalid Hook Call Warning](https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate-react)
87
- when React UI is linked, add the following code to your app's Webpack config:
88
-
89
- ```js
90
- const path = require('path');
91
-
92
- module.exports = {
93
- resolve: {
94
- alias: {
95
- react: path.resolve('./node_modules/react'),
96
- 'react-dom': path.resolve('./node_modules/react-dom'),
97
- },
98
- },
99
- };
100
- ```
101
-
102
- ## General Guidelines
103
-
104
- To keep React UI consistent and predictable the following guidelines should be observed:
105
-
106
- 1. If component accepts the `children` prop it should be either required or the element
107
- should return `null` when no children are provided.
108
-
109
- ## Documenting
110
-
111
- We use [Docz](https://docz.site) (powered by [Gatsby](https://www.gatsbyjs.com))
112
- as the documentation platform. The documentation itself is written in
113
- [MDX](https://mdxjs.com) format — a human-readable blend of the popular Markdown
114
- and JSX syntax.
115
-
116
- Run `npm start` to run the docs in development mode, and open
117
- `http://localhost:3000` in your browser to see the docs in live-reload mode.
118
-
119
- A few things to note:
120
-
121
- - In order to get component props parsed and rendered by Docz, it's crucial to
122
- **import the component into an MDX file right from its source file** — parsing
123
- a re-exported component (typically via `index.js`) isn't currently supported.
124
-
125
- - If you don't want Gatsby to collect **anonymous statistics**, you may want to
126
- disable [Gatsby telemetry](https://www.gatsbyjs.com/docs/telemetry/) by
127
- running `npx gatsby telemetry --disable`.
128
-
129
- - If you see the Not found page after having **changed the configuration of Docz
130
- or Gatsby in the live-reload mode,** you may either restart the Docz
131
- development server (`ctrl + c` and `npm start`), or try to edit an MDX file
132
- which makes the Docz rebuild, too.
133
-
134
- - To **make your authoring experience better,** we recommend to make sure your
135
- IDE understands the MDX syntax and is able to help you wrap lines in MD and
136
- MDX files automatically (Jetbrains IDE's and VSCode support both features
137
- out-of-the-box or through a plugin).