@react-ui-org/react-ui 0.42.1 → 0.44.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. package/CONTRIBUTING.md +44 -25
  2. package/README.md +1 -1
  3. package/dist/lib.development.js +1597 -651
  4. package/dist/lib.js +1 -9
  5. package/package.json +47 -46
  6. package/src/lib/components/{ui/Alert → Alert}/Alert.jsx +17 -14
  7. package/src/lib/components/{ui/Alert → Alert}/Alert.scss +3 -3
  8. package/src/lib/components/{ui/Alert → Alert}/README.mdx +6 -6
  9. package/src/lib/components/{ui/Alert → Alert}/_settings.scss +1 -1
  10. package/src/lib/components/{ui/Alert → Alert}/_theme.scss +0 -0
  11. package/src/lib/components/{ui/Alert → Alert}/_tools.scss +0 -0
  12. package/src/lib/components/{ui/Alert → Alert}/index.js +0 -0
  13. package/src/lib/components/{ui/Badge → Badge}/Badge.jsx +2 -2
  14. package/src/lib/components/{ui/Badge → Badge}/Badge.scss +3 -3
  15. package/src/lib/components/{ui/Badge → Badge}/README.mdx +3 -3
  16. package/src/lib/components/{ui/Badge → Badge}/index.js +0 -0
  17. package/src/lib/components/Button/Button.jsx +198 -0
  18. package/src/lib/components/{ui/Button → Button}/Button.scss +0 -0
  19. package/src/lib/components/{ui/Button → Button}/README.mdx +161 -76
  20. package/src/lib/components/Button/_base.scss +148 -0
  21. package/src/lib/components/{ui/Button → Button}/_priorities.scss +0 -4
  22. package/src/lib/components/{ui/Button → Button}/_settings.scss +2 -3
  23. package/src/lib/components/{ui/Button → Button}/_theme.scss +3 -11
  24. package/src/lib/components/{ui/Button → Button}/_tools.scss +27 -44
  25. package/src/lib/components/Button/helpers/getRootLabelVisibilityClassName.js +33 -0
  26. package/src/lib/components/{ui/Button → Button}/helpers/getRootPriorityClassName.js +0 -4
  27. package/src/lib/components/{ui/Button → Button}/index.js +0 -0
  28. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/ButtonGroup.jsx +9 -11
  29. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/ButtonGroup.scss +0 -0
  30. package/src/lib/components/ButtonGroup/ButtonGroupContext.js +3 -0
  31. package/src/lib/components/{ui/ButtonGroup → ButtonGroup}/README.mdx +30 -6
  32. package/src/lib/components/ButtonGroup/index.js +2 -0
  33. package/src/lib/components/{layout/CTA → CTA}/CTA.jsx +5 -2
  34. package/src/lib/components/{layout/CTA → CTA}/CTA.scss +2 -2
  35. package/src/lib/components/{layout/CTA → CTA}/CTACenter.jsx +1 -1
  36. package/src/lib/components/{layout/CTA → CTA}/CTAEnd.jsx +1 -1
  37. package/src/lib/components/{layout/CTA → CTA}/CTAStart.jsx +1 -1
  38. package/src/lib/components/{layout/CTA → CTA}/README.mdx +4 -4
  39. package/src/lib/components/{layout/CTA → CTA}/index.js +0 -0
  40. package/src/lib/components/{ui/Card → Card}/Card.jsx +6 -4
  41. package/src/lib/components/{ui/Card → Card}/Card.scss +1 -1
  42. package/src/lib/components/{ui/Card → Card}/CardBody.jsx +1 -1
  43. package/src/lib/components/{ui/Card → Card}/CardFooter.jsx +1 -1
  44. package/src/lib/components/{ui/Card → Card}/README.mdx +4 -4
  45. package/src/lib/components/{ui/Card → Card}/_theme.scss +0 -0
  46. package/src/lib/components/{ui/Card → Card}/_tools.scss +0 -0
  47. package/src/lib/components/{ui/Card → Card}/index.js +0 -0
  48. package/src/lib/components/{layout/Center → Center}/Center.jsx +1 -1
  49. package/src/lib/components/{layout/Center → Center}/Center.scss +0 -0
  50. package/src/lib/components/{layout/Center → Center}/README.mdx +2 -2
  51. package/src/lib/components/{layout/Center → Center}/index.js +0 -0
  52. package/src/lib/components/CheckboxField/CheckboxField.jsx +164 -0
  53. package/src/lib/components/{ui/CheckboxField → CheckboxField}/CheckboxField.scss +5 -5
  54. package/src/lib/components/{ui/CheckboxField → CheckboxField}/README.mdx +17 -14
  55. package/src/lib/components/{ui/CheckboxField → CheckboxField}/index.js +0 -0
  56. package/src/lib/components/FileInputField/FileInputField.jsx +162 -0
  57. package/src/lib/components/{ui/FileInputField → FileInputField}/FileInputField.scss +5 -5
  58. package/src/lib/components/{ui/FileInputField → FileInputField}/README.mdx +8 -6
  59. package/src/lib/components/{ui/FileInputField → FileInputField}/index.js +0 -0
  60. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayout.jsx +16 -18
  61. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayout.scss +3 -3
  62. package/src/lib/components/FormLayout/FormLayoutContext.js +3 -0
  63. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayoutCustomField.jsx +33 -30
  64. package/src/lib/components/{layout/FormLayout → FormLayout}/FormLayoutCustomField.scss +4 -4
  65. package/src/lib/components/{layout/FormLayout → FormLayout}/README.mdx +37 -47
  66. package/src/lib/components/{layout/FormLayout → FormLayout}/_theme.scss +0 -0
  67. package/src/lib/components/{layout/FormLayout → FormLayout}/index.js +1 -0
  68. package/src/lib/components/{layout/Grid → Grid}/Grid.jsx +23 -5
  69. package/src/lib/components/{layout/Grid → Grid}/Grid.scss +13 -4
  70. package/src/lib/components/{layout/Grid → Grid}/GridSpan.jsx +10 -3
  71. package/src/lib/components/{layout/Grid → Grid}/README.mdx +42 -38
  72. package/src/lib/components/{layout/Grid → Grid}/_theme.scss +1 -2
  73. package/src/lib/components/{layout/Grid → Grid}/_tools.scss +2 -2
  74. package/src/lib/components/{layout/Grid → Grid}/helpers/generateResponsiveCustomProperties.js +0 -0
  75. package/src/lib/components/{layout/Grid → Grid}/index.js +0 -0
  76. package/src/lib/components/Link/Link.jsx +45 -0
  77. package/src/lib/components/Link/Link.scss +11 -0
  78. package/src/lib/components/Link/README.mdx +85 -0
  79. package/src/lib/components/Link/_theme.scss +4 -0
  80. package/src/lib/components/Link/index.js +1 -0
  81. package/src/lib/components/{layout/List → List}/List.jsx +1 -1
  82. package/src/lib/components/{layout/List → List}/List.scss +2 -2
  83. package/src/lib/components/{layout/List → List}/ListItem.jsx +1 -1
  84. package/src/lib/components/{layout/List → List}/README.mdx +3 -3
  85. package/src/lib/components/{layout/List → List}/_theme.scss +0 -0
  86. package/src/lib/components/{layout/List → List}/index.js +0 -0
  87. package/src/lib/components/{layout/Media → Media}/Media.jsx +4 -2
  88. package/src/lib/components/{layout/Media → Media}/Media.scss +1 -1
  89. package/src/lib/components/{layout/Media → Media}/MediaBody.jsx +1 -1
  90. package/src/lib/components/{layout/Media → Media}/MediaObject.jsx +1 -1
  91. package/src/lib/components/{layout/Media → Media}/README.mdx +2 -2
  92. package/src/lib/components/{layout/Media → Media}/index.js +0 -0
  93. package/src/lib/components/{ui/Modal → Modal}/Modal.jsx +28 -27
  94. package/src/lib/components/{ui/Modal → Modal}/Modal.scss +5 -5
  95. package/src/lib/components/{ui/Modal → Modal}/README.mdx +42 -42
  96. package/src/lib/components/{ui/Modal → Modal}/_settings.scss +4 -4
  97. package/src/lib/components/{ui/Modal → Modal}/_theme.scss +0 -0
  98. package/src/lib/components/{ui/Modal → Modal}/index.js +0 -0
  99. package/src/lib/components/{ui/Paper → Paper}/Paper.jsx +8 -1
  100. package/src/lib/components/{ui/Paper → Paper}/Paper.scss +5 -0
  101. package/src/lib/components/{ui/Paper → Paper}/README.mdx +15 -3
  102. package/src/lib/components/{ui/Paper → Paper}/_theme.scss +2 -0
  103. package/src/lib/components/{ui/Paper → Paper}/index.js +0 -0
  104. package/src/lib/components/{ui/Radio → Radio}/README.mdx +20 -17
  105. package/src/lib/components/Radio/Radio.jsx +188 -0
  106. package/src/lib/components/{ui/Radio → Radio}/Radio.scss +9 -9
  107. package/src/lib/components/{ui/Radio → Radio}/index.js +0 -0
  108. package/src/lib/components/{ui/ScrollView → ScrollView}/README.mdx +11 -11
  109. package/src/lib/components/{ui/ScrollView → ScrollView}/ScrollView.jsx +9 -10
  110. package/src/lib/components/{ui/ScrollView → ScrollView}/ScrollView.scss +6 -6
  111. package/src/lib/components/{ui/ScrollView → ScrollView}/_theme.scss +0 -0
  112. package/src/lib/components/{ui/ScrollView → ScrollView}/index.js +0 -0
  113. package/src/lib/components/{ui/SelectField → SelectField}/README.mdx +47 -44
  114. package/src/lib/components/SelectField/SelectField.jsx +219 -0
  115. package/src/lib/components/{ui/SelectField → SelectField}/SelectField.scss +6 -6
  116. package/src/lib/components/{ui/SelectField → SelectField}/index.js +0 -0
  117. package/src/lib/components/{ui/Table → Table}/README.mdx +10 -10
  118. package/src/lib/components/{ui/Table → Table}/Table.jsx +9 -13
  119. package/src/lib/components/{ui/Table → Table}/Table.scss +1 -1
  120. package/src/lib/components/{ui/Table → Table}/_settings.scss +4 -4
  121. package/src/lib/components/{ui/Table → Table}/index.js +0 -0
  122. package/src/lib/components/{ui/Tabs → Tabs}/README.mdx +4 -4
  123. package/src/lib/components/{ui/Tabs → Tabs}/Tabs.jsx +4 -4
  124. package/src/lib/components/{ui/Tabs → Tabs}/Tabs.scss +1 -1
  125. package/src/lib/components/{ui/Tabs → Tabs}/TabsItem.jsx +4 -3
  126. package/src/lib/components/{ui/Tabs → Tabs}/TabsItem.scss +3 -3
  127. package/src/lib/components/{ui/Tabs → Tabs}/_theme.scss +0 -0
  128. package/src/lib/components/{ui/Tabs → Tabs}/index.js +0 -0
  129. package/src/lib/components/{ui/Text → Text}/README.mdx +19 -19
  130. package/src/lib/components/{ui/Text → Text}/Text.jsx +1 -1
  131. package/src/lib/components/{ui/Text → Text}/Text.scss +0 -0
  132. package/src/lib/components/{ui/Text → Text}/helpers/getRootHyphensClassName.js +0 -0
  133. package/src/lib/components/{ui/Text → Text}/helpers/getRootWordWrappingClassName.js +0 -0
  134. package/src/lib/components/{ui/Text → Text}/index.js +0 -0
  135. package/src/lib/components/{ui/TextArea → TextArea}/README.mdx +8 -6
  136. package/src/lib/components/{ui/TextArea → TextArea}/TextArea.jsx +78 -78
  137. package/src/lib/components/{ui/TextArea → TextArea}/TextArea.scss +6 -6
  138. package/src/lib/components/{ui/TextArea → TextArea}/index.js +0 -0
  139. package/src/lib/components/{ui/TextField → TextField}/README.mdx +7 -6
  140. package/src/lib/components/{ui/TextField → TextField}/TextField.jsx +20 -22
  141. package/src/lib/components/{ui/TextField → TextField}/TextField.scss +6 -6
  142. package/src/lib/components/{ui/TextField → TextField}/index.js +0 -0
  143. package/src/lib/components/{ui/Toggle → Toggle}/README.mdx +17 -14
  144. package/src/lib/components/Toggle/Toggle.jsx +163 -0
  145. package/src/lib/components/{ui/Toggle → Toggle}/Toggle.scss +5 -5
  146. package/src/lib/components/{ui/Toggle → Toggle}/index.js +0 -0
  147. package/src/lib/components/{layout/Toolbar → Toolbar}/README.mdx +29 -29
  148. package/src/lib/components/{layout/Toolbar → Toolbar}/Toolbar.jsx +1 -1
  149. package/src/lib/components/{layout/Toolbar → Toolbar}/Toolbar.scss +1 -1
  150. package/src/lib/components/{layout/Toolbar → Toolbar}/ToolbarGroup.jsx +1 -1
  151. package/src/lib/components/{layout/Toolbar → Toolbar}/ToolbarItem.jsx +1 -1
  152. package/src/lib/components/{layout/Toolbar → Toolbar}/_theme.scss +0 -0
  153. package/src/lib/components/{layout/Toolbar → Toolbar}/index.js +0 -0
  154. package/src/lib/components/{ui/withForwardedRef.jsx → withForwardedRef.jsx} +0 -0
  155. package/src/lib/helpers/resolveContextOrProp.js +7 -0
  156. package/src/lib/index.js +34 -35
  157. package/src/lib/styles/tools/_accessibility.scss +9 -0
  158. package/src/lib/theme.scss +25 -7
  159. package/src/lib/components/ui/Button/Button.jsx +0 -191
  160. package/src/lib/components/ui/Button/_base.scss +0 -154
  161. package/src/lib/components/ui/Button/helpers/getRootLabelVisibilityClassName.js +0 -11
  162. package/src/lib/components/ui/ButtonGroup/index.js +0 -1
  163. package/src/lib/components/ui/CheckboxField/CheckboxField.jsx +0 -173
  164. package/src/lib/components/ui/FileInputField/FileInputField.jsx +0 -158
  165. package/src/lib/components/ui/Radio/Radio.jsx +0 -179
  166. package/src/lib/components/ui/SelectField/SelectField.jsx +0 -214
  167. package/src/lib/components/ui/Toggle/Toggle.jsx +0 -174
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-ui-org/react-ui",
3
3
  "description": "React UI is a themeable UI library for React apps.",
4
- "version": "0.42.1",
4
+ "version": "0.44.1",
5
5
  "keywords": [
6
6
  "react",
7
7
  "ui",
@@ -33,69 +33,69 @@
33
33
  "npm": ">=6.14.8"
34
34
  },
35
35
  "dependencies": {
36
- "@nejcm/docz-theme-extended": "^2.0.14",
37
- "docz": "^2.3.1",
38
- "gatsby-plugin-sass": "^3.2.0",
39
- "normalize.css": "^8.0.1",
40
- "prism-react-renderer": "^1.2.1",
41
- "prop-types": "^15.7.2",
42
- "react": "^16.14.0",
43
- "react-dom": "^16.14.0",
44
- "react-keyed-flatten-children": "^1.3.0"
36
+ "normalize.css": "^8.0.1"
45
37
  },
46
38
  "devDependencies": {
47
- "@babel/cli": "^7.14.8",
48
- "@babel/core": "^7.15.0",
49
- "@babel/plugin-proposal-class-properties": "^7.14.5",
50
- "@babel/plugin-transform-spread": "^7.14.6",
51
- "@babel/preset-env": "^7.15.0",
52
- "@babel/preset-react": "^7.14.5",
53
- "@babel/register": "^7.15.3",
39
+ "@babel/cli": "^7.16.0",
40
+ "@babel/core": "^7.16.0",
41
+ "@babel/eslint-parser": "^7.16.3",
42
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
43
+ "@babel/plugin-transform-spread": "^7.16.0",
44
+ "@babel/preset-env": "^7.16.0",
45
+ "@babel/preset-react": "^7.16.0",
46
+ "@babel/register": "^7.16.0",
47
+ "@nejcm/docz-theme-extended": "^2.0.14",
48
+ "@testing-library/jest-dom": "^5.15.0",
49
+ "@testing-library/react": "^12.1.2",
50
+ "@testing-library/user-event": "^13.5.0",
54
51
  "@visionappscz/eslint-config-visionapps": "^1.5.0",
55
52
  "@visionappscz/stylelint-config-visionapps": "^2.0.1",
56
53
  "@visionappscz/stylelint-config-visionapps-order": "^2.1.0",
57
- "autoprefixer": "^10.3.1",
54
+ "autoprefixer": "^10.4.0",
58
55
  "babel-core": "^7.0.0-bridge.0",
59
- "babel-eslint": "^10.1.0",
60
- "babel-jest": "^27.0.6",
61
- "babel-loader": "^8.2.2",
62
- "concurrently": "^6.2.1",
63
- "core-js": "^3.16.1",
56
+ "babel-jest": "^27.3.1",
57
+ "babel-loader": "^8.2.3",
58
+ "concurrently": "^6.4.0",
59
+ "core-js": "^3.19.1",
64
60
  "css-loader": "^5.2.7",
65
- "enzyme": "^3.11.0",
66
- "enzyme-adapter-react-16": "^1.15.6",
67
- "enzyme-to-json": "^3.6.2",
61
+ "docz": "^2.3.3-alpha.0",
68
62
  "eslint": "^7.32.0",
69
- "eslint-config-airbnb": "^18.2.1",
63
+ "eslint-config-airbnb": "^19.0.0",
70
64
  "eslint-loader": "^4.0.2",
71
- "eslint-plugin-import": "^2.24.0",
72
- "eslint-plugin-jsx-a11y": "^6.4.1",
73
- "eslint-plugin-markdown": "^2.2.0",
74
- "eslint-plugin-mdx": "^1.14.1",
75
- "eslint-plugin-react": "^7.24.0",
76
- "eslint-plugin-react-hooks": "^4.2.0",
65
+ "eslint-plugin-import": "^2.25.3",
66
+ "eslint-plugin-jsx-a11y": "^6.5.1",
67
+ "eslint-plugin-markdown": "^2.2.1",
68
+ "eslint-plugin-mdx": "^1.16.0",
69
+ "eslint-plugin-react": "^7.27.0",
70
+ "eslint-plugin-react-hooks": "^4.3.0",
71
+ "gatsby-plugin-sass": "^3.2.0",
77
72
  "identity-obj-proxy": "^3.0.0",
78
- "jest": "^27.0.6",
79
- "markdownlint-cli2": "~0.2.0",
80
- "nodemon": "^2.0.12",
81
- "postcss": "^8.3.6",
73
+ "jest": "^27.3.1",
74
+ "markdownlint-cli2": "~0.3.2",
75
+ "nodemon": "^2.0.15",
76
+ "postcss": "^8.3.11",
82
77
  "postcss-loader": "^4.3.0",
78
+ "prism-react-renderer": "^1.2.1",
79
+ "prop-types": "^15.7.2",
80
+ "react": "^17.0.2",
81
+ "react-dom": "^17.0.2",
83
82
  "rimraf": "^3.0.2",
84
- "sass": "^1.37.5",
83
+ "sass": "^1.43.4",
85
84
  "sass-loader": "^10.2.0",
86
- "sinon": "^11.1.2",
85
+ "sinon": "^12.0.1",
87
86
  "style-loader": "^2.0.0",
88
87
  "stylelint": "^13.13.1",
89
- "stylelint-config-css-modules": "^2.2.0",
90
- "stylelint-order": "^4.1.0",
91
- "stylelint-webpack-plugin": "^3.0.1",
88
+ "stylelint-config-css-modules": "^2.3.0",
89
+ "stylelint-order": "^5.0.0",
90
+ "stylelint-webpack-plugin": "^3.1.0",
92
91
  "webpack": "^4.46.0",
93
92
  "webpack-cli": "^3.3.12",
94
93
  "webpack-visualizer-plugin": "^0.1.11"
95
94
  },
96
95
  "peerDependencies": {
97
- "react": "^16.13.1",
98
- "react-dom": "^16.13.1"
96
+ "prop-types": "^15.7.2",
97
+ "react": "^17.0.2",
98
+ "react-dom": "^17.0.2"
99
99
  },
100
100
  "resolutions": {
101
101
  "@babel/plugin-transform-spread": "7.12.1"
@@ -107,12 +107,13 @@
107
107
  "docs:serve": "rimraf .docz && npm run docs:build && docz serve",
108
108
  "lib:build": "concurrently \"webpack --mode development --config webpack.config.js\" \"webpack --mode production --config webpack.config.js\"",
109
109
  "lib:jest": "jest",
110
- "lib:test": "stylelint \"src/lib/**/*.scss\" --config stylelint.config.js && eslint src/lib --ext js,jsx && npm run lib:jest",
110
+ "lib:test:js": "concurrently \"eslint --ext js,jsx src/lib tests/propTests\" \"npm run lib:jest\"",
111
+ "lib:test:css": "stylelint \"src/lib/**/*.scss\" --config stylelint.config.js",
111
112
  "markdown:lint": "markdownlint-cli2 \"**/*.md?(x)\" \"#.docz\" \"#dist\" \"#node_modules\" && eslint \"**/*.md?(x)\"",
112
113
  "markdown:watch": "nodemon --watch . --ext md,mdx --exec \"npm run markdown:lint\"",
113
114
  "prepublishOnly": "npm run lib:build",
114
115
  "start": "concurrently --kill-others \"npm run watch\" \"npm run docs:dev\"",
115
- "test": "concurrently \"npm run markdown:lint\" \"npm run lib:test\"",
116
+ "test": "concurrently \"npm run markdown:lint\" \"npm run lib:test:js\" \"npm run lib:test:css\"",
116
117
  "watch": "npm run markdown:watch"
117
118
  }
118
119
  }
@@ -1,15 +1,15 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import getRootColorClassName from '../../../helpers/getRootColorClassName';
4
- import { withProviderContext } from '../../../provider';
3
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
4
+ import { withProviderContext } from '../../provider';
5
5
  import styles from './Alert.scss';
6
6
 
7
7
  export const Alert = ({
8
8
  children,
9
- closeHandler,
10
9
  color,
11
10
  icon,
12
11
  id,
12
+ onClose,
13
13
  translations,
14
14
  }) => (
15
15
  <div
@@ -31,13 +31,13 @@ export const Alert = ({
31
31
  >
32
32
  {children}
33
33
  </div>
34
- {closeHandler && (
34
+ {onClose && (
35
35
  <button
36
36
  type="button"
37
37
  {...(id && { id: `${id}__close` })}
38
38
  className={styles.close}
39
- onClick={() => closeHandler()}
40
- onKeyPress={() => closeHandler()}
39
+ onClick={() => onClose()}
40
+ onKeyPress={() => onClose()}
41
41
  tabIndex="0"
42
42
  title={translations.close}
43
43
  >
@@ -48,10 +48,10 @@ export const Alert = ({
48
48
  );
49
49
 
50
50
  Alert.defaultProps = {
51
- closeHandler: null,
52
51
  color: 'note',
53
52
  icon: null,
54
53
  id: undefined,
54
+ onClose: null,
55
55
  };
56
56
 
57
57
  Alert.propTypes = {
@@ -59,11 +59,6 @@ Alert.propTypes = {
59
59
  * Alert body.
60
60
  */
61
61
  children: PropTypes.node.isRequired,
62
- /**
63
- * Function to call when the close button is clicked. If not provided, close buttons will be
64
- * hidden.
65
- */
66
- closeHandler: PropTypes.func,
67
62
  /**
68
63
  * [Color variant](/foundation/colors#component-colors) to clarify importance and meaning of the alert.
69
64
  */
@@ -75,10 +70,18 @@ Alert.propTypes = {
75
70
  */
76
71
  icon: PropTypes.node,
77
72
  /**
78
- * ID of the root HTML element. It also serves as a prefix for alert body and and close button
79
- * elements: `<ID>__content` and `<ID>__close`.
73
+ * ID of the root HTML element.
74
+ *
75
+ * Also serves as base for ids of nested elements:
76
+ * * `<ID>__close`
77
+ * * `<ID>__content`
80
78
  */
81
79
  id: PropTypes.string,
80
+ /**
81
+ * Function to call when the close button is clicked. If not provided, close buttons will be
82
+ * hidden.
83
+ */
84
+ onClose: PropTypes.func,
82
85
  /**
83
86
  * Translations required by the component.
84
87
  */
@@ -1,7 +1,7 @@
1
1
  @use 'sass:map';
2
- @use '../../../styles/theme/typography';
3
- @use '../../../styles/tools/accessibility';
4
- @use '../../../styles/tools/reset';
2
+ @use '../../styles/theme/typography';
3
+ @use '../../styles/tools/accessibility';
4
+ @use '../../styles/tools/reset';
5
5
  @use 'settings';
6
6
  @use 'theme';
7
7
  @use 'tools';
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Alert
3
- menu: 'UI'
4
- route: /components/ui/alert
3
+ menu: 'Miscellaneous'
4
+ route: /components/alert
5
5
  ---
6
6
 
7
7
  # Alert
@@ -10,8 +10,8 @@ import {
10
10
  Playground,
11
11
  Props,
12
12
  } from 'docz'
13
- import Icon from '../../../../docs/_components/Icon'
14
- import Placeholder from '../../../../docs/_components/Placeholder'
13
+ import Icon from '../../../docs/_components/Icon'
14
+ import Placeholder from '../../../docs/_components/Placeholder'
15
15
  import Button from '../Button'
16
16
  import {
17
17
  AlertWithContext as Alert,
@@ -190,14 +190,14 @@ click on the close button:
190
190
  <Alert
191
191
  color="success"
192
192
  icon={<Icon icon="success" />}
193
- closeHandler={() => setIsAlertVisible(false)}
193
+ onClose={() => setIsAlertVisible(false)}
194
194
  >
195
195
  <strong>Success:</strong> Settings have been successfully saved.
196
196
  </Alert>
197
197
  ) : (
198
198
  <Button
199
- clickHandler={() => setIsAlertVisible(true)}
200
199
  label="Bring the alert back!"
200
+ onClick={() => setIsAlertVisible(true)}
201
201
  />
202
202
  )}
203
203
  </>
@@ -1,5 +1,5 @@
1
1
  @use 'sass:map';
2
- @use '../../../styles/theme/typography';
2
+ @use '../../styles/theme/typography';
3
3
  @use 'theme';
4
4
 
5
5
  $font-size: map.get(typography.$size-values, 0);
File without changes
@@ -1,7 +1,7 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import getRootColorClassName from '../../../helpers/getRootColorClassName';
4
- import { withProviderContext } from '../../../provider';
3
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
4
+ import { withProviderContext } from '../../provider';
5
5
  import styles from './Badge.scss';
6
6
 
7
7
  export const Badge = ({
@@ -1,8 +1,8 @@
1
1
  @use 'sass:map';
2
2
  @use 'sass:math';
3
- @use '../../../styles/theme/borders';
4
- @use '../../../styles/theme/colors';
5
- @use '../../../styles/theme/typography';
3
+ @use '../../styles/theme/borders';
4
+ @use '../../styles/theme/colors';
5
+ @use '../../styles/theme/typography';
6
6
 
7
7
  $_badge-size: 1.25rem;
8
8
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Badge
3
- menu: 'UI'
4
- route: /components/ui/badge
3
+ menu: 'Miscellaneous'
4
+ route: /components/badge
5
5
  ---
6
6
 
7
7
  # Badge
@@ -12,7 +12,7 @@ import {
12
12
  Playground,
13
13
  Props,
14
14
  } from 'docz'
15
- import Placeholder from '../../../../docs/_components/Placeholder'
15
+ import Placeholder from '../../../docs/_components/Placeholder'
16
16
  import { Badge } from './Badge'
17
17
 
18
18
  ## Basic Usage
File without changes
@@ -0,0 +1,198 @@
1
+ import PropTypes from 'prop-types';
2
+ import React, { useContext } from 'react';
3
+ import getRootSizeClassName from '../../helpers/getRootSizeClassName';
4
+ import getRootColorClassName from '../../helpers/getRootColorClassName';
5
+ import { resolveContextOrProp } from '../../helpers/resolveContextOrProp';
6
+ import { withProviderContext } from '../../provider';
7
+ import transferProps from '../../utils/transferProps';
8
+ import withForwardedRef from '../withForwardedRef';
9
+ import { ButtonGroupContext } from '../ButtonGroup';
10
+ import getRootLabelVisibilityClassName from './helpers/getRootLabelVisibilityClassName';
11
+ import getRootPriorityClassName from './helpers/getRootPriorityClassName';
12
+ import styles from './Button.scss';
13
+
14
+ export const Button = ({
15
+ afterLabel,
16
+ beforeLabel,
17
+ block,
18
+ disabled,
19
+ endCorner,
20
+ feedbackIcon,
21
+ forwardedRef,
22
+ id,
23
+ label,
24
+ labelVisibility,
25
+ priority,
26
+ size,
27
+ startCorner,
28
+ type,
29
+ color,
30
+ ...restProps
31
+ }) => {
32
+ const context = useContext(ButtonGroupContext);
33
+
34
+ return (
35
+ /* No worries, `type` is always assigned correctly through props. */
36
+ /* eslint-disable react/button-has-type */
37
+ <button
38
+ {...transferProps(restProps)}
39
+ className={[
40
+ styles.root,
41
+ getRootPriorityClassName(
42
+ resolveContextOrProp(context && context.priority, priority),
43
+ styles,
44
+ ),
45
+ getRootColorClassName(color, styles),
46
+ getRootSizeClassName(
47
+ resolveContextOrProp(context && context.size, size),
48
+ styles,
49
+ ),
50
+ getRootLabelVisibilityClassName(labelVisibility, styles),
51
+ resolveContextOrProp(context && context.block, block) ? styles.rootBlock : '',
52
+ context ? styles.rootGrouped : '',
53
+ feedbackIcon ? styles.hasRootFeedback : '',
54
+ ].join(' ')}
55
+ disabled={resolveContextOrProp(context && context.disabled, disabled) || !!feedbackIcon}
56
+ id={id}
57
+ ref={forwardedRef}
58
+ type={type}
59
+ >
60
+ {startCorner && (
61
+ <span className={styles.startCorner}>
62
+ {startCorner}
63
+ </span>
64
+ )}
65
+ {beforeLabel && (
66
+ <span className={styles.beforeLabel}>
67
+ {beforeLabel}
68
+ </span>
69
+ )}
70
+ <span
71
+ className={styles.label}
72
+ {...(id && { id: `${id}__labelText` })}
73
+ >
74
+ {label}
75
+ </span>
76
+ {afterLabel && (
77
+ <span className={styles.afterLabel}>
78
+ {afterLabel}
79
+ </span>
80
+ )}
81
+ {endCorner && (
82
+ <span className={styles.endCorner}>
83
+ {endCorner}
84
+ </span>
85
+ )}
86
+ {feedbackIcon && (
87
+ <span className={styles.feedbackIcon}>
88
+ {feedbackIcon}
89
+ </span>
90
+ )}
91
+ </button>
92
+ /* eslint-enable react/button-has-type */
93
+ );
94
+ };
95
+
96
+ Button.defaultProps = {
97
+ afterLabel: null,
98
+ beforeLabel: null,
99
+ block: false,
100
+ color: 'primary',
101
+ disabled: false,
102
+ endCorner: null,
103
+ feedbackIcon: null,
104
+ forwardedRef: undefined,
105
+ id: undefined,
106
+ labelVisibility: 'xs',
107
+ priority: 'filled',
108
+ size: 'medium',
109
+ startCorner: null,
110
+ type: 'button',
111
+ };
112
+
113
+ Button.propTypes = {
114
+ /**
115
+ * Element to be displayed after label, eg. an icon.
116
+ */
117
+ afterLabel: PropTypes.node,
118
+ /**
119
+ * Element to be displayed before label, eg. an icon.
120
+ */
121
+ beforeLabel: PropTypes.node,
122
+ /**
123
+ * If `true`, the button will span the full width of its parent.
124
+ *
125
+ * Ignored if the component is rendered within `ButtonGroup` component
126
+ * as the value is inherited in such case.
127
+ */
128
+ block: PropTypes.bool,
129
+ /**
130
+ * [Color variant](/foundation/colors#component-colors) to clarify importance and meaning of the button.
131
+ */
132
+ color: PropTypes.oneOf(['primary', 'secondary', 'success', 'warning', 'danger', 'help', 'info', 'note', 'light', 'dark']),
133
+ /**
134
+ * If `true`, the button will be disabled.
135
+ *
136
+ * Ignored if the component is rendered within `ButtonGroup` component
137
+ * as the value is inherited in such case.
138
+ */
139
+ disabled: PropTypes.bool,
140
+ /**
141
+ * Element to be displayed in the top right corner.
142
+ */
143
+ endCorner: PropTypes.node,
144
+ /**
145
+ * Element to be displayed as a feedback icon on top of button label. When defined, it implies the
146
+ * button is in feedback state.
147
+ */
148
+ feedbackIcon: PropTypes.node,
149
+ /**
150
+ * Reference forwarded to the `button` element.
151
+ */
152
+ forwardedRef: PropTypes.oneOfType([
153
+ PropTypes.func,
154
+ // eslint-disable-next-line react/forbid-prop-types
155
+ PropTypes.shape({ current: PropTypes.any }),
156
+ ]),
157
+ /**
158
+ * ID of the root HTML element.
159
+ *
160
+ * Also serves as base for ids of nested elements:
161
+ * * `<ID>__labelText`
162
+ */
163
+ id: PropTypes.string,
164
+ /**
165
+ * Button label.
166
+ */
167
+ label: PropTypes.string.isRequired,
168
+ /**
169
+ * Defines minimum breakpoint from which the button label will be visible.
170
+ */
171
+ labelVisibility: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl', 'none']),
172
+ /**
173
+ * Visual priority to highlight or suppress the button.
174
+ *
175
+ * Ignored if the component is rendered within `ButtonGroup` component
176
+ * as the value is inherited in such case.
177
+ */
178
+ priority: PropTypes.oneOf(['filled', 'outline', 'flat']),
179
+ /**
180
+ * Size of the button.
181
+ *
182
+ * Ignored if the component is rendered within `ButtonGroup` component
183
+ * as the value is inherited in such case.
184
+ */
185
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
186
+ /**
187
+ * Element to be displayed in the top left corner.
188
+ */
189
+ startCorner: PropTypes.node,
190
+ /**
191
+ * Set the HTML `type` attribute of the `button` element.
192
+ */
193
+ type: PropTypes.oneOf(['button', 'submit']),
194
+ };
195
+
196
+ export const ButtonWithContext = withForwardedRef(withProviderContext(Button, 'Button'));
197
+
198
+ export default ButtonWithContext;