@automattic/vip-design-system 0.9.6 → 0.10.2

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 (161) hide show
  1. package/.eslintrc.json +2 -5
  2. package/.storybook/decorators/withBoundingBox.jsx +15 -0
  3. package/.storybook/decorators/withColorMode.jsx +45 -0
  4. package/.storybook/decorators/withThemeProvider.jsx +18 -0
  5. package/.storybook/main.js +7 -8
  6. package/.storybook/preview.js +13 -32
  7. package/README.md +4 -4
  8. package/babel.config.js +2 -3
  9. package/build/system/Avatar/Avatar.js +17 -12
  10. package/build/system/Avatar/Avatar.stories.js +1 -9
  11. package/build/system/Avatar/Avatar.test.js +16 -7
  12. package/build/system/Badge/Badge.js +18 -13
  13. package/build/system/Badge/Badge.stories.js +1 -9
  14. package/build/system/Badge/Badge.test.js +16 -7
  15. package/build/system/BlankState/BlankState.js +10 -4
  16. package/build/system/BlankState/BlankState.stories.js +1 -9
  17. package/build/system/BlankState/BlankState.test.js +26 -17
  18. package/build/system/Box/Box.js +19 -4
  19. package/build/system/Box/Box.stories.js +1 -9
  20. package/build/system/Button/Button.js +15 -12
  21. package/build/system/Button/Button.stories.js +3 -3
  22. package/build/system/Button/Button.test.js +14 -5
  23. package/build/system/Card/Card.js +17 -13
  24. package/build/system/Card/Card.stories.js +1 -9
  25. package/build/system/Card/Card.test.js +19 -10
  26. package/build/system/Code/Code.js +16 -12
  27. package/build/system/Code/Code.stories.js +17 -5
  28. package/build/system/Code/Code.test.js +29 -20
  29. package/build/system/ConfirmationDialog/ConfirmationDialog.js +16 -10
  30. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.js +1 -9
  31. package/build/system/Dialog/Dialog.js +9 -8
  32. package/build/system/Dialog/Dialog.stories.js +1 -9
  33. package/build/system/Dialog/DialogButton.js +8 -9
  34. package/build/system/Dialog/DialogContent.js +11 -12
  35. package/build/system/Dialog/DialogDivider.js +5 -3
  36. package/build/system/Dialog/DialogMenu.js +5 -3
  37. package/build/system/Dialog/DialogMenuItem.js +8 -9
  38. package/build/system/Dialog/DialogTrigger.js +9 -2
  39. package/build/system/Flex/Flex.js +9 -2
  40. package/build/system/Flex/Flex.stories.js +1 -9
  41. package/build/system/Form/AsyncSearchSelect.js +8 -10
  42. package/build/system/Form/Checkbox.js +10 -11
  43. package/build/system/Form/InlineSelect.js +12 -14
  44. package/build/system/Form/Input.js +8 -9
  45. package/build/system/Form/Input.stories.js +2 -8
  46. package/build/system/Form/Label.js +9 -2
  47. package/build/system/Form/Radio.js +8 -9
  48. package/build/system/Form/RadioBoxGroup.js +8 -9
  49. package/build/system/Form/RadioBoxGroup.stories.js +53 -0
  50. package/build/system/Form/SearchSelect.js +15 -18
  51. package/build/system/Form/Select.js +10 -10
  52. package/build/system/Form/Select.stories.js +96 -10
  53. package/build/system/Form/Select.test.js +14 -5
  54. package/build/system/Form/Textarea.js +8 -9
  55. package/build/system/Form/Toggle.js +18 -13
  56. package/build/system/Form/ToggleGroup.js +8 -9
  57. package/build/system/Form/ToggleGroup.stories.js +50 -0
  58. package/build/system/Form/ToggleRow.js +9 -10
  59. package/build/system/Form/Validation.js +8 -9
  60. package/build/system/Grid/Grid.js +9 -2
  61. package/build/system/Grid/Grid.stories.js +1 -9
  62. package/build/system/Heading/Heading.js +18 -13
  63. package/build/system/Heading/Heading.stories.js +1 -9
  64. package/build/system/Link/Link.js +9 -10
  65. package/build/system/Link/Link.stories.js +1 -9
  66. package/build/system/Notice/Notice.js +18 -13
  67. package/build/system/Notice/Notice.stories.js +20 -3
  68. package/build/system/Notification/Notification.js +3 -2
  69. package/build/system/Notification/Notification.stories.js +1 -9
  70. package/build/system/OptionRow/OptionRow.js +26 -16
  71. package/build/system/OptionRow/OptionRow.stories.js +12 -12
  72. package/build/system/OptionRow/OptionRow.test.js +93 -0
  73. package/build/system/Progress/Progress.js +17 -12
  74. package/build/system/Progress/Progress.stories.js +1 -9
  75. package/build/system/ResourceList/ResourceItem.js +2 -2
  76. package/build/system/ResourceList/ResourceList.js +14 -4
  77. package/build/system/ResourceList/ResourceList.stories.js +377 -0
  78. package/build/system/Spinner/Spinner.js +17 -12
  79. package/build/system/Spinner/Spinner.stories.js +1 -9
  80. package/build/system/Table/Table.js +10 -13
  81. package/build/system/Table/Table.stories.js +1 -9
  82. package/build/system/Table/TableRow.js +2 -2
  83. package/build/system/Tabs/TabItem.js +10 -10
  84. package/build/system/Tabs/Tabs.js +19 -14
  85. package/build/system/Tabs/Tabs.stories.js +1 -9
  86. package/build/system/Text/Text.js +18 -13
  87. package/build/system/Text/Text.stories.js +1 -9
  88. package/build/system/Time/Time.stories.js +52 -0
  89. package/build/system/Time/index.js +17 -13
  90. package/build/system/Timeline/Timeline.js +17 -11
  91. package/build/system/Timeline/Timeline.stories.js +16 -22
  92. package/build/system/Tooltip/Tooltip.js +10 -11
  93. package/build/system/Tooltip/Tooltip.stories.js +1 -9
  94. package/build/system/UsageChart/UsageChart.stories.js +20 -0
  95. package/build/system/Wizard/Wizard.js +18 -11
  96. package/build/system/Wizard/Wizard.stories.js +5 -4
  97. package/build/system/Wizard/WizardStep.js +8 -4
  98. package/build/system/Wizard/WizardStepHorizontal.js +8 -4
  99. package/build/system/index.js +3 -3
  100. package/build/system/theme/colors.js +1 -1
  101. package/build/system/theme/index.js +10 -5
  102. package/package.json +25 -13
  103. package/src/system/Avatar/Avatar.js +4 -0
  104. package/src/system/Avatar/{Avatar.stories.js → Avatar.stories.jsx} +0 -0
  105. package/src/system/Badge/Badge.js +4 -1
  106. package/src/system/Badge/{Badge.stories.js → Badge.stories.jsx} +0 -0
  107. package/src/system/BlankState/BlankState.js +4 -1
  108. package/src/system/BlankState/{BlankState.stories.js → BlankState.stories.jsx} +0 -0
  109. package/src/system/BlankState/BlankState.test.js +23 -22
  110. package/src/system/Box/Box.js +6 -1
  111. package/src/system/Box/{Box.stories.js → Box.stories.jsx} +0 -0
  112. package/src/system/Button/Button.js +3 -0
  113. package/src/system/Button/{Button.stories.js → Button.stories.jsx} +0 -0
  114. package/src/system/Card/Card.js +4 -1
  115. package/src/system/Card/{Card.stories.js → Card.stories.jsx} +0 -0
  116. package/src/system/Code/Code.js +4 -1
  117. package/src/system/Code/{Code.stories.js → Code.stories.jsx} +0 -0
  118. package/src/system/ConfirmationDialog/ConfirmationDialog.js +4 -2
  119. package/src/system/ConfirmationDialog/{ConfirmationDialog.stories.js → ConfirmationDialog.stories.jsx} +0 -0
  120. package/src/system/Dialog/Dialog.js +1 -1
  121. package/src/system/Dialog/{Dialog.stories.js → Dialog.stories.jsx} +0 -0
  122. package/src/system/Flex/{Flex.stories.js → Flex.stories.jsx} +0 -0
  123. package/src/system/Form/{Input.stories.js → Input.stories.jsx} +0 -0
  124. package/src/system/Form/{RadioBoxGroup.stories.js → RadioBoxGroup.stories.jsx} +0 -0
  125. package/src/system/Form/Select.js +1 -1
  126. package/src/system/Form/{Select.stories.js → Select.stories.jsx} +0 -0
  127. package/src/system/Form/Toggle.js +4 -2
  128. package/src/system/Form/{ToggleGroup.stories.js → ToggleGroup.stories.jsx} +0 -0
  129. package/src/system/Grid/{Grid.stories.js → Grid.stories.jsx} +0 -0
  130. package/src/system/Heading/Heading.js +4 -1
  131. package/src/system/Heading/{Heading.stories.js → Heading.stories.jsx} +0 -0
  132. package/src/system/Link/{Link.stories.js → Link.stories.jsx} +0 -0
  133. package/src/system/Notice/Notice.js +4 -1
  134. package/src/system/Notice/{Notice.stories.js → Notice.stories.jsx} +0 -0
  135. package/src/system/Notification/Notification.js +1 -0
  136. package/src/system/Notification/{Notification.stories.js → Notification.stories.jsx} +0 -0
  137. package/src/system/OptionRow/OptionRow.js +11 -2
  138. package/src/system/OptionRow/{OptionRow.stories.js → OptionRow.stories.jsx} +9 -0
  139. package/src/system/OptionRow/OptionRow.test.js +49 -0
  140. package/src/system/Progress/Progress.js +4 -1
  141. package/src/system/Progress/{Progress.stories.js → Progress.stories.jsx} +0 -0
  142. package/src/system/ResourceList/ResourceList.js +1 -1
  143. package/src/system/ResourceList/{ResourceList.stories.js → ResourceList.stories.jsx} +0 -0
  144. package/src/system/Spinner/Spinner.js +4 -1
  145. package/src/system/Spinner/{Spinner.stories.js → Spinner.stories.jsx} +0 -0
  146. package/src/system/Table/Table.js +1 -1
  147. package/src/system/Table/{Table.stories.js → Table.stories.jsx} +0 -0
  148. package/src/system/Tabs/TabItem.js +1 -0
  149. package/src/system/Tabs/Tabs.js +5 -2
  150. package/src/system/Tabs/{Tabs.stories.js → Tabs.stories.jsx} +0 -0
  151. package/src/system/Text/Text.js +4 -1
  152. package/src/system/Text/{Text.stories.js → Text.stories.jsx} +0 -0
  153. package/src/system/Time/{Time.stories.js → Time.stories.jsx} +0 -0
  154. package/src/system/Time/index.js +4 -1
  155. package/src/system/Timeline/Timeline.js +4 -2
  156. package/src/system/Timeline/{Timeline.stories.js → Timeline.stories.jsx} +0 -0
  157. package/src/system/Tooltip/{Tooltip.stories.js → Tooltip.stories.jsx} +0 -0
  158. package/src/system/Wizard/Wizard.js +6 -2
  159. package/src/system/Wizard/{Wizard.stories.js → Wizard.stories.jsx} +1 -1
  160. package/src/system/Wizard/WizardStep.js +5 -2
  161. package/src/system/Wizard/WizardStepHorizontal.js +4 -1
package/.eslintrc.json CHANGED
@@ -5,11 +5,8 @@
5
5
  "presets": ["@babel/preset-react"]
6
6
  }
7
7
  },
8
- "extends": [ "wpvip" ],
9
- "plugins": [
10
- "react",
11
- "jsx-a11y"
12
- ],
8
+ "extends": ["plugin:storybook/recommended", "wpvip"],
9
+ "plugins": ["react", "jsx-a11y"],
13
10
  "rules": {
14
11
  "id-length": 0,
15
12
  "react/jsx-uses-react": "off",
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { makeDecorator } from '@storybook/addons';
3
+ import { Box } from "../../src/system";
4
+
5
+ export default makeDecorator( {
6
+ name: 'withBoundingBox',
7
+ parameterName: 'colorMode2',
8
+ wrapper: ( storyFn, context ) => {
9
+ return (
10
+ <Box sx={{ p: 4, height: "100vh" }}>
11
+ {storyFn()}
12
+ </Box>
13
+ );
14
+ }
15
+ } );
@@ -0,0 +1,45 @@
1
+ import React, { useEffect } from 'react';
2
+ import { makeDecorator } from '@storybook/addons';
3
+ import { useColorMode } from 'theme-ui';
4
+
5
+ // These need to be updated to import VIP design tokens;
6
+ const lightBackground = '#ffffff';
7
+ const darkBackground = '#333333';
8
+
9
+ export const backgrounds = {
10
+ default: 'Light',
11
+ values: [
12
+ {
13
+ name: 'Light',
14
+ value: lightBackground,
15
+ },
16
+ {
17
+ name: 'Dark',
18
+ value: darkBackground,
19
+ },
20
+ ],
21
+ };
22
+
23
+ function ThemeChanger( { background } ) {
24
+ const [colorMode, setColorMode] = useColorMode();
25
+ const newColorMode = darkBackground === background ? 'dark' : 'default';
26
+
27
+ useEffect( () => {
28
+ setColorMode( newColorMode );
29
+ }, [ newColorMode ] );
30
+
31
+ return null;
32
+ };
33
+
34
+ export default makeDecorator( {
35
+ name: 'withColorMode',
36
+ parameterName: 'colorMode',
37
+ wrapper: ( storyFn, context ) => {
38
+ return (
39
+ <>
40
+ <ThemeChanger background={context.globals?.backgrounds?.value} />
41
+ {storyFn()}
42
+ </>
43
+ );
44
+ }
45
+ } );
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { makeDecorator } from '@storybook/addons';
3
+ import { ThemeProvider } from 'theme-ui';
4
+ import { Box, theme } from "../../src/system";
5
+
6
+ export default makeDecorator( {
7
+ name: 'withThemeProvider',
8
+ parameterName: 'themeUi',
9
+ wrapper: ( storyFn, context ) => {
10
+ return (
11
+ <ThemeProvider theme={theme}>
12
+ <Box sx={{ p: 4, height: "100vh" }}>
13
+ {storyFn( context )}
14
+ </Box>
15
+ </ThemeProvider>
16
+ );
17
+ }
18
+ } );
@@ -1,10 +1,9 @@
1
1
  module.exports = {
2
- presets: ["@storybook/preset-create-react-app"],
3
- stories: ["../src/**/*.stories.js"],
4
- addons: ["@storybook/addon-actions", "@storybook/addon-links"],
5
- webpackFinal: async (config) => {
6
- // do mutation to the config
7
-
8
- return config;
9
- },
2
+ stories: ['../src/**/*.stories.jsx'],
3
+ addons: [
4
+ '@storybook/addon-a11y',
5
+ '@storybook/addon-docs',
6
+ '@storybook/addon-essentials',
7
+ '@storybook/addon-links',
8
+ ],
10
9
  };
@@ -1,38 +1,19 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
  import ReactDOM from 'react-dom';
3
- import { ThemeProvider, useColorMode } from "theme-ui";
4
- import { addDecorator } from "@storybook/react";
5
- import { Button, Box, theme, Link } from "../src/system";
6
3
  import axe from '@axe-core/react'
4
+ import withBoundingBox from './decorators/withBoundingBox';
5
+ import withColorMode, { backgrounds } from './decorators/withColorMode';
6
+ import withThemeProvider from './decorators/withThemeProvider';
7
7
 
8
- const ThemeChanger = () => {
9
- const [colorMode, setColorMode] = useColorMode();
8
+ axe( React, ReactDOM, 1000 );
10
9
 
11
- const setDarkMode = (isDark) => setColorMode(isDark ? "dark" : "default");
10
+ export const decorators = [
11
+ withBoundingBox,
12
+ withColorMode,
13
+ withThemeProvider,
14
+ ];
12
15
 
13
- return (
14
- <Link
15
- href="#!"
16
- onClick={(e) => {
17
- e.preventDefault();
18
- setDarkMode(colorMode == "dark" ? false : true);
19
- }}
20
- >
21
- <Button sx={{ position: "fixed", right: 106, top: 36 }}>
22
- Toggle
23
- </Button>
24
- </Link>
25
- );
16
+ export const parameters = {
17
+ actions: { argTypesRegex: "^on[A-Z].*" },
18
+ backgrounds,
26
19
  };
27
-
28
-
29
- axe( React, ReactDOM, 1000 );
30
-
31
- addDecorator((story) => (
32
- <React.Fragment>
33
- <ThemeProvider theme={theme}>
34
- <ThemeChanger />
35
- <Box sx={{ p: 4, height: "100vh" }}>{story()}</Box>
36
- </ThemeProvider>
37
- </React.Fragment>
38
- ));
package/README.md CHANGED
@@ -43,10 +43,10 @@ Note: it's super useful to run `npm run watch` in another process, so any change
43
43
 
44
44
  ### Publish NPM Package Instructions
45
45
 
46
- Once all the changes needed are merged to master, and you are ready to release a new version, follow these steps:
46
+ Once all the changes needed are merged to trunk, and you are ready to release a new version, follow these steps:
47
47
 
48
48
  1. Make sure you have NPM access to our @automattic organization. Ask for #vip-platform-pâtisserie help in case you need it.
49
- 2. Pull all the changes to your local master. Make sure you have the latest master locally.
49
+ 2. Pull all the changes to your local trunk. Make sure you have the latest trunk locally.
50
50
  3. We follow the [https://semver.org/](https://semver.org/) versioning. You should run the specific version you are trying to publish:
51
51
 
52
52
  ```bash
@@ -67,11 +67,11 @@ npm publish
67
67
 
68
68
  Note: You need to have two-factor enabled in your npm account. The publish command will request a two-factor code to complete the publishing process.
69
69
 
70
- 7. Push the tags to the repository and master updates.
70
+ 7. Push the tags to the repository and trunk updates.
71
71
 
72
72
  ```
73
73
  git push --tags
74
- git push origin master
74
+ git push origin trunk
75
75
  ```
76
76
 
77
77
  8. For major versions or breaking changes, it's recommended to [create a RELEASE](https://github.com/Automattic/vip-design-system/releases) with the published tag.
package/babel.config.js CHANGED
@@ -1,7 +1,6 @@
1
1
  module.exports = {
2
- ignore: [
3
- '**/*.stories.js',
4
- ],
2
+ ignore: [],
3
+ plugins: ['@babel/plugin-transform-runtime'],
5
4
  presets: [
6
5
  [
7
6
  '@babel/preset-env',
@@ -1,23 +1,25 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
6
  exports.Avatar = void 0;
5
7
 
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
6
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
7
13
 
8
14
  var _themeUi = require("theme-ui");
9
15
 
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
10
18
  var _ = require("..");
11
19
 
12
20
  var _jsxRuntime = require("theme-ui/jsx-runtime");
13
21
 
14
- var _excluded = ["isVIP", "name", "size", "src"];
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
-
18
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
-
20
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
+ var _excluded = ["isVIP", "name", "size", "src", "className"];
21
23
 
22
24
  var Avatar = function Avatar(_ref) {
23
25
  var _ref$isVIP = _ref.isVIP,
@@ -28,9 +30,10 @@ var Avatar = function Avatar(_ref) {
28
30
  size = _ref$size === void 0 ? 32 : _ref$size,
29
31
  _ref$src = _ref.src,
30
32
  src = _ref$src === void 0 ? null : _ref$src,
31
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
32
-
33
- return (0, _jsxRuntime.jsx)(_.Box, _extends({
33
+ _ref$className = _ref.className,
34
+ className = _ref$className === void 0 ? null : _ref$className,
35
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
36
+ return (0, _jsxRuntime.jsx)(_.Box, (0, _extends2["default"])({
34
37
  sx: {
35
38
  borderRadius: 9999,
36
39
  height: size + 2,
@@ -47,7 +50,8 @@ var Avatar = function Avatar(_ref) {
47
50
  color: 'white',
48
51
  padding: '1px',
49
52
  textAlign: 'center'
50
- }
53
+ },
54
+ className: (0, _classnames["default"])('vip-avatar-component', className)
51
55
  }, props, {
52
56
  children: src ? (0, _jsxRuntime.jsx)(_themeUi.Image, {
53
57
  src: src,
@@ -76,5 +80,6 @@ Avatar.propTypes = {
76
80
  isVIP: _propTypes["default"].bool,
77
81
  size: _propTypes["default"].number,
78
82
  src: _propTypes["default"].string,
79
- name: _propTypes["default"].string
83
+ name: _propTypes["default"].string,
84
+ className: _propTypes["default"].any
80
85
  };
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.Default = exports["default"] = void 0;
5
-
6
- var _react = _interopRequireDefault(require("react"));
4
+ exports["default"] = exports.Default = void 0;
7
5
 
8
6
  var _ = require("..");
9
7
 
10
8
  var _jsxRuntime = require("theme-ui/jsx-runtime");
11
9
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
- /**
15
- * External dependencies
16
- */
17
-
18
10
  /**
19
11
  * Internal dependencies
20
12
  */
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
3
9
  var _react = require("@testing-library/react");
4
10
 
5
11
  var _jestAxe = require("jest-axe");
@@ -8,15 +14,18 @@ var _Avatar = require("./Avatar");
8
14
 
9
15
  var _jsxRuntime = require("theme-ui/jsx-runtime");
10
16
 
11
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12
-
13
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17
+ /**
18
+ * External dependencies
19
+ */
14
20
 
21
+ /**
22
+ * Internal dependencies
23
+ */
15
24
  describe('<Avatar />', function () {
16
- it('renders the Avatar without an image', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
25
+ it('renders the Avatar without an image', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
17
26
  var _render, container;
18
27
 
19
- return regeneratorRuntime.wrap(function _callee$(_context) {
28
+ return _regenerator["default"].wrap(function _callee$(_context) {
20
29
  while (1) {
21
30
  switch (_context.prev = _context.next) {
22
31
  case 0:
@@ -41,10 +50,10 @@ describe('<Avatar />', function () {
41
50
  }
42
51
  }, _callee);
43
52
  })));
44
- it('renders the Avatar with image', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
53
+ it('renders the Avatar with image', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
45
54
  var _render2, container;
46
55
 
47
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
56
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
48
57
  while (1) {
49
58
  switch (_context2.prev = _context2.next) {
50
59
  case 0:
@@ -1,31 +1,34 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
6
  exports.Badge = void 0;
5
7
 
6
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
 
8
- var _ = require("../");
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
11
 
10
- var _jsxRuntime = require("theme-ui/jsx-runtime");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
11
13
 
12
- var _excluded = ["variant", "sx"];
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
15
 
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
+ var _ = require("../");
15
17
 
16
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
18
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
17
19
 
18
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+ var _excluded = ["variant", "sx", "className"];
19
21
 
20
22
  var Badge = function Badge(_ref) {
21
23
  var _ref$variant = _ref.variant,
22
24
  variant = _ref$variant === void 0 ? 'blue' : _ref$variant,
23
25
  sx = _ref.sx,
24
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
25
-
26
- return (0, _jsxRuntime.jsx)(_.Text, _extends({
26
+ _ref$className = _ref.className,
27
+ className = _ref$className === void 0 ? null : _ref$className,
28
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
29
+ return (0, _jsxRuntime.jsx)(_.Text, (0, _extends2["default"])({
27
30
  as: "span",
28
- sx: _extends({
31
+ sx: (0, _extends2["default"])({
29
32
  fontSize: 0,
30
33
  padding: 0,
31
34
  bg: variant + ".20",
@@ -36,12 +39,14 @@ var Badge = function Badge(_ref) {
36
39
  display: 'inline-block',
37
40
  borderRadius: 1,
38
41
  fontWeight: 'heading'
39
- }, sx)
42
+ }, sx),
43
+ className: (0, _classnames["default"])('vip-badge-component', className)
40
44
  }, props));
41
45
  };
42
46
 
43
47
  exports.Badge = Badge;
44
48
  Badge.propTypes = {
45
49
  variant: _propTypes["default"].string,
46
- sx: _propTypes["default"].object
50
+ sx: _propTypes["default"].object,
51
+ className: _propTypes["default"].any
47
52
  };
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.Default = exports["default"] = void 0;
5
-
6
- var _react = _interopRequireDefault(require("react"));
4
+ exports["default"] = exports.Default = void 0;
7
5
 
8
6
  var _ = require("..");
9
7
 
10
8
  var _jsxRuntime = require("theme-ui/jsx-runtime");
11
9
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
- /**
15
- * External dependencies
16
- */
17
-
18
10
  /**
19
11
  * Internal dependencies
20
12
  */
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
3
9
  var _react = require("@testing-library/react");
4
10
 
5
11
  var _jestAxe = require("jest-axe");
@@ -8,15 +14,18 @@ var _Badge = require("./Badge");
8
14
 
9
15
  var _jsxRuntime = require("theme-ui/jsx-runtime");
10
16
 
11
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12
-
13
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17
+ /**
18
+ * External dependencies
19
+ */
14
20
 
21
+ /**
22
+ * Internal dependencies
23
+ */
15
24
  describe('<Badge />', function () {
16
- it('renders the Badge component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
25
+ it('renders the Badge component', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
17
26
  var _render, container;
18
27
 
19
- return regeneratorRuntime.wrap(function _callee$(_context) {
28
+ return _regenerator["default"].wrap(function _callee$(_context) {
20
29
  while (1) {
21
30
  switch (_context.prev = _context.next) {
22
31
  case 0:
@@ -41,10 +50,10 @@ describe('<Badge />', function () {
41
50
  }
42
51
  }, _callee);
43
52
  })));
44
- it('renders the Badge component with a different variant', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
53
+ it('renders the Badge component with a different variant', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
45
54
  var _render2, container;
46
55
 
47
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
56
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
48
57
  while (1) {
49
58
  switch (_context2.prev = _context2.next) {
50
59
  case 0:
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
6
  exports.BlankState = void 0;
5
7
 
8
+ var _classnames = _interopRequireDefault(require("classnames"));
9
+
6
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
7
11
 
8
12
  var _ = require("..");
9
13
 
10
14
  var _jsxRuntime = require("theme-ui/jsx-runtime");
11
15
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
16
  /** @jsxImportSource theme-ui */
15
17
 
16
18
  /**
@@ -27,12 +29,15 @@ var BlankState = function BlankState(_ref) {
27
29
  image = _ref.image,
28
30
  _ref$imageAlt = _ref.imageAlt,
29
31
  imageAlt = _ref$imageAlt === void 0 ? 'Image representing the blank state' : _ref$imageAlt,
30
- title = _ref.title;
32
+ title = _ref.title,
33
+ _ref$className = _ref.className,
34
+ className = _ref$className === void 0 ? null : _ref$className;
31
35
  return (0, _jsxRuntime.jsxs)(_.Box, {
32
36
  sx: {
33
37
  textAlign: 'center',
34
38
  padding: 5
35
39
  },
40
+ className: (0, _classnames["default"])('vip-blank-state-component', className),
36
41
  children: [icon ? icon : (0, _jsxRuntime.jsx)("img", {
37
42
  src: image,
38
43
  sx: {
@@ -60,5 +65,6 @@ BlankState.propTypes = {
60
65
  icon: _propTypes["default"].node,
61
66
  image: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].string]),
62
67
  imageAlt: _propTypes["default"].string,
63
- title: _propTypes["default"].node
68
+ title: _propTypes["default"].node,
69
+ className: _propTypes["default"].any
64
70
  };
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.Default = exports["default"] = void 0;
5
-
6
- var _react = _interopRequireDefault(require("react"));
4
+ exports["default"] = exports.Default = void 0;
7
5
 
8
6
  var _ = require("..");
9
7
 
10
8
  var _jsxRuntime = require("theme-ui/jsx-runtime");
11
9
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
- /**
15
- * External dependencies
16
- */
17
-
18
10
  /**
19
11
  * Internal dependencies
20
12
  */
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+
3
11
  var _react = require("@testing-library/react");
4
12
 
5
13
  var _jestAxe = require("jest-axe");
@@ -12,16 +20,17 @@ var _Link = require("../Link");
12
20
 
13
21
  var _jsxRuntime = require("theme-ui/jsx-runtime");
14
22
 
15
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
-
17
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
18
-
19
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
23
+ /**
24
+ * External dependencies
25
+ */
20
26
 
27
+ /**
28
+ * Internal dependencies
29
+ */
21
30
  // eslint-disable-next-line max-len
22
31
  var image = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='79' height='79' viewBox='0 0 79 79' fill='none'%3E%3Cpath d='M66.3001 15.9C66.3001 15.9 66.3 15.8 66.2 15.8C66.1 15.7 66 15.5 65.9001 15.4C65.9001 15.4 65.9001 15.4 65.9001 15.3L44.4001 0.2C44.3001 0.0999998 44.2 0.0999994 44.1 0.0999994C44 0.0999994 44.0001 0 43.9001 0H43.3C43.2 0 43.1 0.0999994 43.1 0.0999994C43 0.0999994 42.9 0.2 42.8 0.2L28.2001 10.3C28.1 10.4 28.0001 10.5 27.9001 10.6C27.9001 10.6 27.9001 10.6 27.9001 10.7C27.8001 10.8 27.7001 11 27.7001 11.2C27.7001 11.2 27.7001 11.2 27.7001 11.3V31.1L13.9 40.8L13.7001 41C13.6001 41.1 13.6 41.1 13.6 41.2L13.5 41.3C13.5 41.4 13.4 41.5 13.4 41.5V41.6C13.4 41.7 13.3 41.8 13.3 42V62.2C13.3 62.4 13.3 62.6 13.4 62.7V62.8C13.5 62.9 13.6001 63.1 13.7001 63.2C13.7001 63.2 13.7 63.2 13.8 63.3L13.9 63.4L35.3 78.6H35.4001C35.4001 78.6 35.5 78.6 35.5 78.7H35.6C35.8 78.8 36 78.8 36.2001 78.8C36.3001 78.8 36.5 78.8 36.6 78.7H36.7001C36.8001 78.7 36.8001 78.7 36.9001 78.6C36.9001 78.6 37 78.6 37 78.5H37.1L66 58.3C66.1 58.2 66.2001 58.1 66.3001 58V15.9ZM34.6 74.5L16.1 61.3V44.7L34.6 57.8V74.5ZM36 55.3L17.2001 41.9L29 33.5L47.9001 46.9L36 55.3ZM49 44.1L30.5 31V14.4L49 27.5V44.1ZM50.5 24.9L31.6 11.5L43.5 3.2L62.4001 16.6L50.5 24.9Z' fill='%23BD9D70'/%3E%3C/svg%3E";
23
32
  var defaultProps = {
24
- body: 'Sorry, there\'s nothing here yet.',
33
+ body: "Sorry, there's nothing here yet.",
25
34
  cta: (0, _jsxRuntime.jsx)(_Link.Link, {
26
35
  as: "a",
27
36
  children: "Explore add-ons \u2192"
@@ -31,14 +40,14 @@ var defaultProps = {
31
40
  title: 'Power up your application'
32
41
  };
33
42
  describe('<BlankState />', function () {
34
- it('renders the BlankState component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
43
+ it('renders the BlankState component', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
35
44
  var _render, container;
36
45
 
37
- return regeneratorRuntime.wrap(function _callee$(_context) {
46
+ return _regenerator["default"].wrap(function _callee$(_context) {
38
47
  while (1) {
39
48
  switch (_context.prev = _context.next) {
40
49
  case 0:
41
- _render = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, _extends({}, defaultProps))), container = _render.container;
50
+ _render = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, (0, _extends2["default"])({}, defaultProps))), container = _render.container;
42
51
  expect(_react.screen.getByText(defaultProps.body)).toBeInTheDocument();
43
52
  expect(_react.screen.getByText(defaultProps.title)).toBeInTheDocument();
44
53
  expect(_react.screen.getByText('Explore add-ons →')).toBeInTheDocument();
@@ -60,17 +69,17 @@ describe('<BlankState />', function () {
60
69
  }
61
70
  }, _callee);
62
71
  })));
63
- it('renders the BlankState component with default alt text for the given image', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
72
+ it('renders the BlankState component with default alt text for the given image', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
64
73
  var props, _render2, container;
65
74
 
66
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
75
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
67
76
  while (1) {
68
77
  switch (_context2.prev = _context2.next) {
69
78
  case 0:
70
- props = _extends({}, defaultProps, {
79
+ props = (0, _extends2["default"])({}, defaultProps, {
71
80
  imageAlt: undefined
72
81
  });
73
- _render2 = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, _extends({}, props))), container = _render2.container;
82
+ _render2 = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, (0, _extends2["default"])({}, props))), container = _render2.container;
74
83
  expect(_react.screen.getByAltText('Image representing the blank state')).toBeInTheDocument(); // Check for accessibility issues
75
84
 
76
85
  _context2.t0 = expect;
@@ -89,20 +98,20 @@ describe('<BlankState />', function () {
89
98
  }
90
99
  }, _callee2);
91
100
  })));
92
- it('renders the BlankState component with an icon', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
101
+ it('renders the BlankState component with an icon', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
93
102
  var icon, props, _render3, container;
94
103
 
95
- return regeneratorRuntime.wrap(function _callee3$(_context3) {
104
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
96
105
  while (1) {
97
106
  switch (_context3.prev = _context3.next) {
98
107
  case 0:
99
108
  icon = (0, _jsxRuntime.jsx)(_md.MdContentCopy, {
100
109
  title: "this is an icon"
101
110
  });
102
- props = _extends({}, defaultProps, {
111
+ props = (0, _extends2["default"])({}, defaultProps, {
103
112
  icon: icon
104
113
  });
105
- _render3 = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, _extends({}, props))), container = _render3.container;
114
+ _render3 = (0, _react.render)((0, _jsxRuntime.jsx)(_BlankState.BlankState, (0, _extends2["default"])({}, props))), container = _render3.container;
106
115
  expect(_react.screen.getByTitle('this is an icon')).toBeInTheDocument(); // Check for accessibility issues
107
116
 
108
117
  _context3.t0 = expect;