@react-ui-org/react-ui 0.53.0 → 0.55.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 (149) hide show
  1. package/README.md +7 -5
  2. package/dist/react-ui.css +36 -38
  3. package/dist/react-ui.development.css +10800 -0
  4. package/dist/react-ui.development.js +1568 -0
  5. package/dist/react-ui.js +1 -1
  6. package/package.json +7 -4
  7. package/src/components/Alert/Alert.jsx +1 -1
  8. package/src/components/Alert/Alert.module.scss +100 -0
  9. package/src/components/Alert/README.md +9 -7
  10. package/src/components/Badge/Badge.jsx +1 -1
  11. package/src/components/Badge/Badge.module.scss +109 -0
  12. package/src/components/Badge/README.md +9 -7
  13. package/src/components/Button/Button.jsx +1 -1
  14. package/src/components/Button/README.md +9 -7
  15. package/src/components/Button/_base.scss +117 -115
  16. package/src/components/Button/_priorities.scss +135 -133
  17. package/src/components/ButtonGroup/ButtonGroup.jsx +1 -1
  18. package/src/components/ButtonGroup/ButtonGroup.module.scss +35 -0
  19. package/src/components/ButtonGroup/README.md +10 -8
  20. package/src/components/Card/Card.jsx +1 -1
  21. package/src/components/Card/Card.module.scss +72 -0
  22. package/src/components/Card/CardBody.jsx +1 -1
  23. package/src/components/Card/CardFooter.jsx +1 -1
  24. package/src/components/Card/README.md +9 -7
  25. package/src/components/CheckboxField/CheckboxField.jsx +1 -1
  26. package/src/components/CheckboxField/CheckboxField.module.scss +63 -0
  27. package/src/components/CheckboxField/README.md +10 -8
  28. package/src/components/FileInputField/FileInputField.jsx +1 -1
  29. package/src/components/FileInputField/FileInputField.module.scss +65 -0
  30. package/src/components/FileInputField/README.md +10 -8
  31. package/src/components/FormLayout/FormLayout.jsx +1 -1
  32. package/src/components/FormLayout/{FormLayout.scss → FormLayout.module.scss} +30 -28
  33. package/src/components/FormLayout/FormLayoutCustomField.jsx +1 -1
  34. package/src/components/FormLayout/FormLayoutCustomField.module.scss +65 -0
  35. package/src/components/FormLayout/README.md +11 -9
  36. package/src/components/Grid/Grid.jsx +1 -1
  37. package/src/components/Grid/Grid.module.scss +66 -0
  38. package/src/components/Grid/GridSpan.jsx +1 -1
  39. package/src/components/Grid/README.md +11 -8
  40. package/src/components/InputGroup/InputGroup.jsx +9 -1
  41. package/src/components/InputGroup/InputGroup.module.scss +93 -0
  42. package/src/components/InputGroup/README.md +27 -10
  43. package/src/components/Modal/Modal.jsx +1 -1
  44. package/src/components/Modal/Modal.module.scss +80 -0
  45. package/src/components/Modal/ModalBody.jsx +1 -1
  46. package/src/components/Modal/ModalBody.module.scss +20 -0
  47. package/src/components/Modal/ModalCloseButton.jsx +1 -1
  48. package/src/components/Modal/ModalCloseButton.module.scss +20 -0
  49. package/src/components/Modal/ModalContent.jsx +1 -1
  50. package/src/components/Modal/ModalContent.module.scss +7 -0
  51. package/src/components/Modal/ModalFooter.jsx +1 -1
  52. package/src/components/Modal/ModalFooter.module.scss +37 -0
  53. package/src/components/Modal/ModalHeader.jsx +1 -1
  54. package/src/components/Modal/ModalHeader.module.scss +32 -0
  55. package/src/components/Modal/ModalTitle.jsx +1 -1
  56. package/src/components/Modal/ModalTitle.module.scss +12 -0
  57. package/src/components/Modal/README.md +17 -14
  58. package/src/components/Paper/Paper.jsx +1 -1
  59. package/src/components/Paper/Paper.module.scss +19 -0
  60. package/src/components/Paper/README.md +9 -7
  61. package/src/components/Popover/Popover.jsx +1 -1
  62. package/src/components/Popover/Popover.module.scss +238 -0
  63. package/src/components/Popover/PopoverWrapper.jsx +1 -2
  64. package/src/components/Popover/PopoverWrapper.module.scss +5 -0
  65. package/src/components/Popover/README.md +9 -7
  66. package/src/components/Radio/README.md +12 -10
  67. package/src/components/Radio/Radio.jsx +1 -1
  68. package/src/components/Radio/Radio.module.scss +85 -0
  69. package/src/components/ScrollView/README.md +10 -8
  70. package/src/components/ScrollView/ScrollView.jsx +1 -1
  71. package/src/components/ScrollView/ScrollView.module.scss +233 -0
  72. package/src/components/SelectField/README.md +10 -8
  73. package/src/components/SelectField/SelectField.jsx +1 -1
  74. package/src/components/SelectField/SelectField.module.scss +111 -0
  75. package/src/components/Table/README.md +10 -8
  76. package/src/components/Table/Table.jsx +1 -1
  77. package/src/components/Table/Table.module.scss +30 -0
  78. package/src/components/Table/_components/TableBodyCell/TableBodyCell.jsx +1 -1
  79. package/src/components/Table/_components/TableCell.module.scss +28 -0
  80. package/src/components/Table/_components/TableHeaderCell/TableHeaderCell.jsx +1 -1
  81. package/src/components/Tabs/README.md +16 -10
  82. package/src/components/Tabs/Tabs.jsx +1 -1
  83. package/src/components/Tabs/Tabs.module.scss +31 -0
  84. package/src/components/Tabs/TabsItem.jsx +1 -1
  85. package/src/components/Tabs/TabsItem.module.scss +119 -0
  86. package/src/components/Text/README.md +15 -9
  87. package/src/components/Text/Text.jsx +1 -1
  88. package/src/components/Text/Text.module.scss +42 -0
  89. package/src/components/TextArea/README.md +10 -8
  90. package/src/components/TextArea/TextArea.jsx +1 -1
  91. package/src/components/TextArea/TextArea.module.scss +97 -0
  92. package/src/components/TextField/README.md +13 -8
  93. package/src/components/TextField/TextField.jsx +1 -1
  94. package/src/components/TextField/TextField.module.scss +109 -0
  95. package/src/components/TextLink/README.md +10 -8
  96. package/src/components/TextLink/TextLink.jsx +1 -1
  97. package/src/components/TextLink/TextLink.module.scss +18 -0
  98. package/src/components/Toggle/README.md +10 -8
  99. package/src/components/Toggle/Toggle.jsx +1 -1
  100. package/src/components/Toggle/Toggle.module.scss +63 -0
  101. package/src/components/Toolbar/README.md +9 -7
  102. package/src/components/Toolbar/Toolbar.jsx +1 -1
  103. package/src/components/Toolbar/Toolbar.module.scss +85 -0
  104. package/src/components/Toolbar/ToolbarGroup.jsx +1 -1
  105. package/src/components/Toolbar/ToolbarItem.jsx +1 -1
  106. package/src/components/_helpers/transferProps.js +47 -7
  107. package/src/foundation.scss +22 -17
  108. package/src/helpers.scss +12 -8
  109. package/src/index.js +3 -4
  110. package/src/index.scss +7 -0
  111. package/src/layers.scss +4 -0
  112. package/src/styles/elements/_page.scss +0 -4
  113. package/src/styles/helpers/_animation.scss +2 -2
  114. package/src/styles/tools/_utilities.scss +1 -1
  115. package/src/theme.scss +1040 -1038
  116. package/CODEOWNERS +0 -23
  117. package/src/components/Alert/Alert.scss +0 -98
  118. package/src/components/Badge/Badge.scss +0 -107
  119. package/src/components/ButtonGroup/ButtonGroup.scss +0 -33
  120. package/src/components/Card/Card.scss +0 -70
  121. package/src/components/CheckboxField/CheckboxField.scss +0 -61
  122. package/src/components/FileInputField/FileInputField.scss +0 -63
  123. package/src/components/FormLayout/FormLayoutCustomField.scss +0 -63
  124. package/src/components/Grid/Grid.scss +0 -63
  125. package/src/components/InputGroup/InputGroup.scss +0 -87
  126. package/src/components/Modal/Modal.scss +0 -78
  127. package/src/components/Modal/ModalBody.scss +0 -18
  128. package/src/components/Modal/ModalCloseButton.scss +0 -18
  129. package/src/components/Modal/ModalContent.scss +0 -5
  130. package/src/components/Modal/ModalFooter.scss +0 -35
  131. package/src/components/Modal/ModalHeader.scss +0 -30
  132. package/src/components/Modal/ModalTitle.scss +0 -10
  133. package/src/components/Paper/Paper.scss +0 -17
  134. package/src/components/Popover/Popover.scss +0 -236
  135. package/src/components/Popover/PopoverWrapper.scss +0 -3
  136. package/src/components/Radio/Radio.scss +0 -83
  137. package/src/components/ScrollView/ScrollView.scss +0 -227
  138. package/src/components/SelectField/SelectField.scss +0 -109
  139. package/src/components/Table/Table.scss +0 -28
  140. package/src/components/Table/_components/TableCell.scss +0 -26
  141. package/src/components/Tabs/Tabs.scss +0 -28
  142. package/src/components/Tabs/TabsItem.scss +0 -117
  143. package/src/components/Text/Text.scss +0 -40
  144. package/src/components/TextArea/TextArea.scss +0 -95
  145. package/src/components/TextField/TextField.scss +0 -107
  146. package/src/components/TextLink/TextLink.scss +0 -16
  147. package/src/components/Toggle/Toggle.scss +0 -61
  148. package/src/components/Toolbar/Toolbar.scss +0 -83
  149. /package/src/components/Button/{Button.scss → Button.module.scss} +0 -0
@@ -3,145 +3,147 @@
3
3
  @use "theme";
4
4
  @use "tools";
5
5
 
6
- .isRootPriorityFilled.isRootColorPrimary {
7
- @include tools.button-color(filled, primary);
8
- }
9
-
10
- .isRootPriorityFilled.isRootColorSecondary {
11
- @include tools.button-color(filled, secondary);
12
- }
13
-
14
- .isRootPriorityFilled.isRootColorSelected {
15
- @include tools.button-color(filled, selected);
16
- }
17
-
18
- .isRootPriorityFilled.isRootColorSuccess {
19
- @include tools.button-color(filled, success);
20
- }
21
-
22
- .isRootPriorityFilled.isRootColorWarning {
23
- @include tools.button-color(filled, warning);
24
- }
25
-
26
- .isRootPriorityFilled.isRootColorDanger {
27
- @include tools.button-color(filled, danger);
28
- }
29
-
30
- .isRootPriorityFilled.isRootColorHelp {
31
- @include tools.button-color(filled, help);
32
- }
33
-
34
- .isRootPriorityFilled.isRootColorInfo {
35
- @include tools.button-color(filled, info);
36
- }
37
-
38
- .isRootPriorityFilled.isRootColorNote {
39
- @include tools.button-color(filled, note);
40
- }
41
-
42
- .isRootPriorityFilled.isRootColorLight {
43
- @include tools.button-color(filled, light);
44
- }
45
-
46
- .isRootPriorityFilled.isRootColorDark {
47
- @include tools.button-color(filled, dark);
48
- }
49
-
50
- .isRootPriorityOutline.isRootColorPrimary {
51
- @include tools.button-color(outline, primary);
52
- }
53
-
54
- .isRootPriorityOutline.isRootColorSecondary {
55
- @include tools.button-color(outline, secondary);
56
- }
57
-
58
- .isRootPriorityOutline.isRootColorSelected {
59
- @include tools.button-color(outline, selected);
60
- }
61
-
62
- .isRootPriorityOutline.isRootColorSuccess {
63
- @include tools.button-color(outline, success);
64
- }
6
+ @layer components.button {
7
+ .isRootPriorityFilled.isRootColorPrimary {
8
+ @include tools.button-color(filled, primary);
9
+ }
65
10
 
66
- .isRootPriorityOutline.isRootColorWarning {
67
- @include tools.button-color(outline, warning);
68
- }
69
-
70
- .isRootPriorityOutline.isRootColorDanger {
71
- @include tools.button-color(outline, danger);
72
- }
11
+ .isRootPriorityFilled.isRootColorSecondary {
12
+ @include tools.button-color(filled, secondary);
13
+ }
73
14
 
74
- .isRootPriorityOutline.isRootColorHelp {
75
- @include tools.button-color(outline, help);
76
- }
15
+ .isRootPriorityFilled.isRootColorSelected {
16
+ @include tools.button-color(filled, selected);
17
+ }
77
18
 
78
- .isRootPriorityOutline.isRootColorInfo {
79
- @include tools.button-color(outline, info);
80
- }
19
+ .isRootPriorityFilled.isRootColorSuccess {
20
+ @include tools.button-color(filled, success);
21
+ }
81
22
 
82
- .isRootPriorityOutline.isRootColorNote {
83
- @include tools.button-color(outline, note);
84
- }
23
+ .isRootPriorityFilled.isRootColorWarning {
24
+ @include tools.button-color(filled, warning);
25
+ }
85
26
 
86
- .isRootPriorityOutline.isRootColorLight {
87
- @include tools.button-color(outline, light);
88
- }
27
+ .isRootPriorityFilled.isRootColorDanger {
28
+ @include tools.button-color(filled, danger);
29
+ }
89
30
 
90
- .isRootPriorityOutline.isRootColorDark {
91
- @include tools.button-color(outline, dark);
92
- }
31
+ .isRootPriorityFilled.isRootColorHelp {
32
+ @include tools.button-color(filled, help);
33
+ }
93
34
 
94
- .isRootPriorityFlat.isRootColorPrimary {
95
- @include tools.button-color(flat, primary);
96
- }
97
-
98
- .isRootPriorityFlat.isRootColorSecondary {
99
- @include tools.button-color(flat, secondary);
100
- }
101
-
102
- .isRootPriorityFlat.isRootColorSelected {
103
- @include tools.button-color(flat, selected);
104
- }
105
-
106
- .isRootPriorityFlat.isRootColorSuccess {
107
- @include tools.button-color(flat, success);
108
- }
109
-
110
- .isRootPriorityFlat.isRootColorWarning {
111
- @include tools.button-color(flat, warning);
112
- }
113
-
114
- .isRootPriorityFlat.isRootColorDanger {
115
- @include tools.button-color(flat, danger);
116
- }
117
-
118
- .isRootPriorityFlat.isRootColorHelp {
119
- @include tools.button-color(flat, help);
120
- }
121
-
122
- .isRootPriorityFlat.isRootColorInfo {
123
- @include tools.button-color(flat, info);
124
- }
125
-
126
- .isRootPriorityFlat.isRootColorNote {
127
- @include tools.button-color(flat, note);
128
- }
129
-
130
- .isRootPriorityFlat.isRootColorLight {
131
- @include tools.button-color(flat, light);
132
- }
133
-
134
- .isRootPriorityFlat.isRootColorDark {
135
- @include tools.button-color(flat, dark);
136
- }
35
+ .isRootPriorityFilled.isRootColorInfo {
36
+ @include tools.button-color(filled, info);
37
+ }
137
38
 
138
- .isRootInButtonGroup:not(:first-child)::before {
139
- content: "";
140
- position: absolute;
141
- top: calc(-1 * #{theme.$border-width});
142
- bottom: calc(-1 * #{theme.$border-width});
143
- left: calc(-1 * #{theme.$border-width});
144
- z-index: map.get(settings.$group-z-indexes, separator);
145
- border-left: var(--rui-local-separator-width) solid var(--rui-local-separator-color);
146
- transform: translateX(calc(-0.5 * var(--rui-local-gap) - 50%));
39
+ .isRootPriorityFilled.isRootColorNote {
40
+ @include tools.button-color(filled, note);
41
+ }
42
+
43
+ .isRootPriorityFilled.isRootColorLight {
44
+ @include tools.button-color(filled, light);
45
+ }
46
+
47
+ .isRootPriorityFilled.isRootColorDark {
48
+ @include tools.button-color(filled, dark);
49
+ }
50
+
51
+ .isRootPriorityOutline.isRootColorPrimary {
52
+ @include tools.button-color(outline, primary);
53
+ }
54
+
55
+ .isRootPriorityOutline.isRootColorSecondary {
56
+ @include tools.button-color(outline, secondary);
57
+ }
58
+
59
+ .isRootPriorityOutline.isRootColorSelected {
60
+ @include tools.button-color(outline, selected);
61
+ }
62
+
63
+ .isRootPriorityOutline.isRootColorSuccess {
64
+ @include tools.button-color(outline, success);
65
+ }
66
+
67
+ .isRootPriorityOutline.isRootColorWarning {
68
+ @include tools.button-color(outline, warning);
69
+ }
70
+
71
+ .isRootPriorityOutline.isRootColorDanger {
72
+ @include tools.button-color(outline, danger);
73
+ }
74
+
75
+ .isRootPriorityOutline.isRootColorHelp {
76
+ @include tools.button-color(outline, help);
77
+ }
78
+
79
+ .isRootPriorityOutline.isRootColorInfo {
80
+ @include tools.button-color(outline, info);
81
+ }
82
+
83
+ .isRootPriorityOutline.isRootColorNote {
84
+ @include tools.button-color(outline, note);
85
+ }
86
+
87
+ .isRootPriorityOutline.isRootColorLight {
88
+ @include tools.button-color(outline, light);
89
+ }
90
+
91
+ .isRootPriorityOutline.isRootColorDark {
92
+ @include tools.button-color(outline, dark);
93
+ }
94
+
95
+ .isRootPriorityFlat.isRootColorPrimary {
96
+ @include tools.button-color(flat, primary);
97
+ }
98
+
99
+ .isRootPriorityFlat.isRootColorSecondary {
100
+ @include tools.button-color(flat, secondary);
101
+ }
102
+
103
+ .isRootPriorityFlat.isRootColorSelected {
104
+ @include tools.button-color(flat, selected);
105
+ }
106
+
107
+ .isRootPriorityFlat.isRootColorSuccess {
108
+ @include tools.button-color(flat, success);
109
+ }
110
+
111
+ .isRootPriorityFlat.isRootColorWarning {
112
+ @include tools.button-color(flat, warning);
113
+ }
114
+
115
+ .isRootPriorityFlat.isRootColorDanger {
116
+ @include tools.button-color(flat, danger);
117
+ }
118
+
119
+ .isRootPriorityFlat.isRootColorHelp {
120
+ @include tools.button-color(flat, help);
121
+ }
122
+
123
+ .isRootPriorityFlat.isRootColorInfo {
124
+ @include tools.button-color(flat, info);
125
+ }
126
+
127
+ .isRootPriorityFlat.isRootColorNote {
128
+ @include tools.button-color(flat, note);
129
+ }
130
+
131
+ .isRootPriorityFlat.isRootColorLight {
132
+ @include tools.button-color(flat, light);
133
+ }
134
+
135
+ .isRootPriorityFlat.isRootColorDark {
136
+ @include tools.button-color(flat, dark);
137
+ }
138
+
139
+ .isRootInButtonGroup:not(:first-child)::before {
140
+ content: "";
141
+ position: absolute;
142
+ top: calc(-1 * #{theme.$border-width});
143
+ bottom: calc(-1 * #{theme.$border-width});
144
+ left: calc(-1 * #{theme.$border-width});
145
+ z-index: map.get(settings.$group-z-indexes, separator);
146
+ border-left: var(--rui-local-separator-width) solid var(--rui-local-separator-color);
147
+ transform: translateX(calc(-0.5 * var(--rui-local-gap) - 50%));
148
+ }
147
149
  }
@@ -7,7 +7,7 @@ import { classNames } from '../../utils/classNames';
7
7
  import getRootPriorityClassName from '../_helpers/getRootPriorityClassName';
8
8
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
9
9
  import { transferProps } from '../_helpers/transferProps';
10
- import styles from './ButtonGroup.scss';
10
+ import styles from './ButtonGroup.module.scss';
11
11
  import { ButtonGroupContext } from './ButtonGroupContext';
12
12
 
13
13
  export const ButtonGroup = ({
@@ -0,0 +1,35 @@
1
+ // 1. ButtonGroup gap is implemented using the `margin` property on buttons so the buttons can overlap and reduce
2
+ // duplicate borders.
3
+
4
+ @use "theme";
5
+
6
+ @layer components.button-group {
7
+ .root {
8
+ --rui-local-inner-border-radius: #{theme.$inner-border-radius};
9
+
10
+ display: inline-flex; // 1.
11
+ }
12
+
13
+ .isRootPriorityFilled {
14
+ --rui-local-gap: #{theme.$filled-gap};
15
+ --rui-local-separator-width: #{theme.$filled-separator-width};
16
+ --rui-local-separator-color: #{theme.$filled-separator-color};
17
+ }
18
+
19
+ .isRootPriorityOutline {
20
+ --rui-local-gap: #{theme.$outline-gap};
21
+ --rui-local-separator-width: #{theme.$outline-separator-width};
22
+ --rui-local-separator-color: #{theme.$outline-separator-color};
23
+ }
24
+
25
+ .isRootPriorityFlat {
26
+ --rui-local-gap: #{theme.$flat-gap};
27
+ --rui-local-separator-width: #{theme.$flat-separator-width};
28
+ --rui-local-separator-color: #{theme.$flat-separator-color};
29
+ }
30
+
31
+ .isRootBlock {
32
+ display: flex;
33
+ width: 100%;
34
+ }
35
+ }
@@ -249,13 +249,15 @@ and communicating the state of individual options.
249
249
  ## Forwarding HTML Attributes
250
250
 
251
251
  In addition to the options below in the [component's API](#api) section, you
252
- can specify [React synthetic events] or **any HTML attribute you like.** All
253
- attributes that don't interfere with the API are forwarded to the root `<div>`
254
- HTML element. This enables making the component interactive and helps to improve
252
+ can specify **any HTML attribute you like.** All attributes that don't interfere
253
+ with the API of the React component are forwarded to the root `<div>` HTML
254
+ element. This enables making the component interactive and helps to improve
255
255
  its accessibility.
256
256
 
257
- 👉 Refer to the MDN reference for the full list of supported attributes of the
258
- [div] element.
257
+ 👉 For the full list of supported attributes refer to:
258
+
259
+ - [`<div>` HTML element attributes][div-attributes]{:target="_blank"}
260
+ - [React common props]{:target="_blank"}
259
261
 
260
262
  ## API
261
263
 
@@ -276,7 +278,7 @@ its accessibility.
276
278
  | `--rui-ButtonGroup--flat__separator__width` | Separator width for `flat` buttons |
277
279
  | `--rui-ButtonGroup--flat__separator__color` | Separator color for `flat` buttons |
278
280
 
279
- [fieldset]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset
280
281
  [accessibility]: https://www.w3.org/WAI/tutorials/forms/grouping/
281
- [React synthetic events]: https://reactjs.org/docs/events.html
282
- [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
282
+ [div-attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
283
+ [fieldset]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset
284
+ [React common props]: https://react.dev/reference/react-dom/components/common#common-props
@@ -4,7 +4,7 @@ import { withGlobalProps } from '../../provider';
4
4
  import { transferProps } from '../_helpers/transferProps';
5
5
  import { classNames } from '../../utils/classNames';
6
6
  import { getRootColorClassName } from '../_helpers/getRootColorClassName';
7
- import styles from './Card.scss';
7
+ import styles from './Card.module.scss';
8
8
 
9
9
  export const Card = ({
10
10
  children,
@@ -0,0 +1,72 @@
1
+ // 1. Retain equal card widths in flex and grid layouts independently on their content.
2
+
3
+ @use "theme";
4
+ @use "tools";
5
+
6
+ @layer components.card {
7
+ .root {
8
+ --rui-local-padding: #{theme.$padding};
9
+
10
+ display: flex;
11
+ flex-direction: column;
12
+ min-width: 0; // 1.
13
+ color: var(--rui-local-color);
14
+ border: theme.$border-width solid var(--rui-local-border-color);
15
+ border-radius: theme.$border-radius;
16
+ background-color: var(--rui-local-background-color);
17
+ }
18
+
19
+ .body {
20
+ flex: 1 0 auto;
21
+ padding: var(--rui-local-padding);
22
+ }
23
+
24
+ .footer {
25
+ padding: var(--rui-local-padding);
26
+ }
27
+
28
+ .isRootDense {
29
+ --rui-local-padding: #{theme.$dense-padding};
30
+ }
31
+
32
+ .isRootRaised {
33
+ box-shadow: theme.$raised-box-shadow;
34
+ }
35
+
36
+ .isRootColorSuccess {
37
+ @include tools.color(success);
38
+ }
39
+
40
+ .isRootColorWarning {
41
+ @include tools.color(warning);
42
+ }
43
+
44
+ .isRootColorDanger {
45
+ @include tools.color(danger);
46
+ }
47
+
48
+ .isRootColorHelp {
49
+ @include tools.color(help);
50
+ }
51
+
52
+ .isRootColorInfo {
53
+ @include tools.color(info);
54
+ }
55
+
56
+ .isRootColorNote {
57
+ @include tools.color(note);
58
+ }
59
+
60
+ .isRootColorLight {
61
+ @include tools.color(light);
62
+ }
63
+
64
+ .isRootColorDark {
65
+ @include tools.color(dark);
66
+ }
67
+
68
+ .isRootDisabled {
69
+ background-color: theme.$disabled-background-color;
70
+ opacity: theme.$disabled-opacity;
71
+ }
72
+ }
@@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
3
  import { withGlobalProps } from '../../provider';
4
4
  import { transferProps } from '../_helpers/transferProps';
5
- import styles from './Card.scss';
5
+ import styles from './Card.module.scss';
6
6
 
7
7
  export const CardBody = ({
8
8
  children,
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { withGlobalProps } from '../../provider';
4
4
  import { isChildrenEmpty } from '../_helpers/isChildrenEmpty';
5
5
  import { transferProps } from '../_helpers/transferProps';
6
- import styles from './Card.scss';
6
+ import styles from './Card.module.scss';
7
7
 
8
8
  export const CardFooter = ({
9
9
  children,
@@ -255,13 +255,15 @@ its interactive elements to disallow user's interaction.
255
255
  ## Forwarding HTML Attributes
256
256
 
257
257
  In addition to the options below in the [component's API](#api) section, you
258
- can specify [React synthetic events] or **any HTML attribute you like.** All
259
- attributes that don't interfere with the API are forwarded to the root `<div>`
260
- HTML element. This enables making the component interactive and helps to improve
258
+ can specify **any HTML attribute you like.** All attributes that don't interfere
259
+ with the API of the React component are forwarded to the root `<div>` HTML
260
+ element. This enables making the component interactive and helps to improve
261
261
  its accessibility.
262
262
 
263
- 👉 Refer to the MDN reference for the full list of supported attributes of the
264
- [div] element.
263
+ 👉 For the full list of supported attributes refer to:
264
+
265
+ - [`<div>` HTML element attributes][div-attributes]{:target="_blank"}
266
+ - [React common props]{:target="_blank"}
265
267
 
266
268
  ## API
267
269
 
@@ -310,5 +312,5 @@ Where:
310
312
  - `<PROPERTY>` is one of `color` (color of text), `border-color`, or
311
313
  `background-color`.
312
314
 
313
- [React synthetic events]: https://reactjs.org/docs/events.html
314
- [div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
315
+ [div-attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
316
+ [React common props]: https://react.dev/reference/react-dom/components/common#common-props
@@ -5,7 +5,7 @@ import { classNames } from '../../utils/classNames';
5
5
  import { getRootValidationStateClassName } from '../_helpers/getRootValidationStateClassName';
6
6
  import { transferProps } from '../_helpers/transferProps';
7
7
  import { FormLayoutContext } from '../FormLayout';
8
- import styles from './CheckboxField.scss';
8
+ import styles from './CheckboxField.module.scss';
9
9
 
10
10
  export const CheckboxField = React.forwardRef((props, ref) => {
11
11
  const {
@@ -0,0 +1,63 @@
1
+ @use "../../styles/tools/form-fields/foundation";
2
+ @use "../../styles/tools/form-fields/inline-field-elements";
3
+ @use "../../styles/tools/form-fields/inline-field-layout";
4
+ @use "../../styles/tools/form-fields/variants";
5
+ @use "../../styles/tools/accessibility";
6
+
7
+ @layer components.checkbox-field {
8
+ // Foundation
9
+ .root {
10
+ @include foundation.root();
11
+ @include inline-field-layout.root();
12
+ @include inline-field-elements.min-tap-target($type: checkbox);
13
+ @include variants.visual(check);
14
+ }
15
+
16
+ .label {
17
+ @include foundation.label();
18
+ }
19
+
20
+ .field {
21
+ @include inline-field-layout.field($type: checkbox);
22
+ }
23
+
24
+ .input {
25
+ @include inline-field-elements.check-input($type: checkbox);
26
+ }
27
+
28
+ .helpText,
29
+ .validationText {
30
+ @include foundation.help-text();
31
+ }
32
+
33
+ .isRootRequired .label {
34
+ @include foundation.label-required();
35
+ }
36
+
37
+ // States
38
+ .isRootStateInvalid {
39
+ @include variants.validation(invalid);
40
+ }
41
+
42
+ .isRootStateValid {
43
+ @include variants.validation(valid);
44
+ }
45
+
46
+ .isRootStateWarning {
47
+ @include variants.validation(warning);
48
+ }
49
+
50
+ // Invisible label
51
+ .isLabelHidden {
52
+ @include accessibility.hide-text();
53
+ }
54
+
55
+ // Layouts
56
+ .hasRootLabelBefore {
57
+ @include inline-field-layout.has-label-before();
58
+ }
59
+
60
+ .isRootInFormLayout {
61
+ @include inline-field-layout.in-form-layout();
62
+ }
63
+ }
@@ -172,13 +172,15 @@ Disabled state makes the input unavailable.
172
172
  ## Forwarding HTML Attributes
173
173
 
174
174
  In addition to the options below in the [component's API](#api) section, you
175
- can specify [React synthetic events] or you can **add whatever HTML attribute
176
- you like.** All attributes that don't interfere with the API are forwarded to
177
- the native HTML `<input>`. This enables making the component interactive and
178
- helps to improve its accessibility.
175
+ can specify **any HTML attribute you like.** All attributes that don't interfere
176
+ with the API of the React component are forwarded to the root `<input>` HTML
177
+ element. This enables making the component interactive and helps to improve
178
+ its accessibility.
179
179
 
180
- 👉 Refer to the MDN reference for the full list of supported attributes of the
181
- [checkbox] input type.
180
+ 👉 For the full list of supported attributes refer to:
181
+
182
+ - [`<input type="checkbox" />` HTML element attributes][checkbox-attributes]{:target="_blank"}
183
+ - [React common props]{:target="_blank"}
182
184
 
183
185
  ## Forwarding ref
184
186
 
@@ -198,6 +200,6 @@ options. On top of that, the following options are available for CheckboxField.
198
200
  | `--rui-FormField--check__input--checkbox__border-radius` | Input corner radius |
199
201
  | `--rui-FormField--check__input--checkbox--checked__background-image` | Background image of checked input |
200
202
 
201
- [React synthetic events]: https://reactjs.org/docs/events.html
202
- [checkbox]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#additional_attributes
203
+ [checkbox-attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#additional_attributes
204
+ [React common props]: https://react.dev/reference/react-dom/components/common#common-props
203
205
  [ref]: https://reactjs.org/docs/refs-and-the-dom.html
@@ -6,7 +6,7 @@ import { getRootValidationStateClassName } from '../_helpers/getRootValidationSt
6
6
  import { resolveContextOrProp } from '../_helpers/resolveContextOrProp';
7
7
  import { transferProps } from '../_helpers/transferProps';
8
8
  import { FormLayoutContext } from '../FormLayout';
9
- import styles from './FileInputField.scss';
9
+ import styles from './FileInputField.module.scss';
10
10
 
11
11
  export const FileInputField = React.forwardRef((props, ref) => {
12
12
  const {
@@ -0,0 +1,65 @@
1
+ @use "../../styles/tools/form-fields/box-field-elements";
2
+ @use "../../styles/tools/form-fields/box-field-layout";
3
+ @use "../../styles/tools/form-fields/foundation";
4
+ @use "../../styles/tools/form-fields/variants";
5
+ @use "../../styles/tools/accessibility";
6
+
7
+ @layer components.file-input-field {
8
+ // Foundation
9
+ .root {
10
+ @include foundation.root();
11
+ }
12
+
13
+ .label {
14
+ @include foundation.label();
15
+ }
16
+
17
+ .inputContainer {
18
+ @include box-field-elements.input-container();
19
+ }
20
+
21
+ .helpText,
22
+ .validationText {
23
+ @include foundation.help-text();
24
+ }
25
+
26
+ .isRootRequired .label {
27
+ @include foundation.label-required();
28
+ }
29
+
30
+ // States
31
+ .isRootStateInvalid {
32
+ @include variants.validation(invalid);
33
+ }
34
+
35
+ .isRootStateValid {
36
+ @include variants.validation(valid);
37
+ }
38
+
39
+ .isRootStateWarning {
40
+ @include variants.validation(warning);
41
+ }
42
+
43
+ // Invisible label
44
+ .isLabelHidden {
45
+ @include accessibility.hide-text();
46
+ }
47
+
48
+ // Layouts
49
+ .isRootLayoutVertical,
50
+ .isRootLayoutHorizontal {
51
+ @include box-field-layout.vertical();
52
+ }
53
+
54
+ .isRootLayoutHorizontal {
55
+ @include box-field-layout.horizontal();
56
+ }
57
+
58
+ .isRootFullWidth {
59
+ @include box-field-layout.full-width();
60
+ }
61
+
62
+ .isRootInFormLayout {
63
+ @include box-field-layout.in-form-layout();
64
+ }
65
+ }