@automattic/vip-design-system 0.19.1 → 0.20.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 (34) hide show
  1. package/README.md +12 -0
  2. package/build/system/Button/Button.js +5 -0
  3. package/build/system/Button/Button.stories.js +8 -0
  4. package/build/system/Heading/Heading.js +7 -3
  5. package/build/system/Heading/Heading.stories.js +0 -3
  6. package/build/system/Link/Link.js +2 -1
  7. package/build/system/NewForm/FormSelect.test.js +79 -7
  8. package/build/system/Progress/Progress.js +45 -16
  9. package/build/system/Progress/Progress.stories.js +21 -4
  10. package/build/system/Table/Table.js +7 -3
  11. package/build/system/Wizard/Wizard.js +1 -3
  12. package/build/system/Wizard/Wizard.stories.js +18 -8
  13. package/build/system/Wizard/WizardStep.js +19 -12
  14. package/build/system/Wizard/WizardStepHorizontal.js +18 -8
  15. package/build/system/index.js +0 -5
  16. package/package.json +2 -1
  17. package/src/system/Button/Button.js +5 -0
  18. package/src/system/Button/Button.stories.jsx +3 -0
  19. package/src/system/Heading/Heading.js +18 -12
  20. package/src/system/Heading/Heading.stories.jsx +0 -1
  21. package/src/system/Link/Link.js +1 -0
  22. package/src/system/NewForm/FormSelect.test.js +38 -0
  23. package/src/system/Progress/Progress.js +55 -26
  24. package/src/system/Progress/Progress.stories.jsx +15 -8
  25. package/src/system/Table/Table.js +6 -2
  26. package/src/system/Wizard/Wizard.js +1 -2
  27. package/src/system/Wizard/Wizard.stories.jsx +6 -6
  28. package/src/system/Wizard/WizardStep.js +23 -25
  29. package/src/system/Wizard/WizardStepHorizontal.js +13 -7
  30. package/src/system/index.js +0 -3
  31. package/src/system/ResourceList/ResourceItem.js +0 -66
  32. package/src/system/ResourceList/ResourceList.js +0 -108
  33. package/src/system/ResourceList/ResourceList.stories.jsx +0 -306
  34. package/src/system/ResourceList/index.js +0 -7
package/README.md CHANGED
@@ -102,3 +102,15 @@ git push origin trunk
102
102
  ```
103
103
 
104
104
  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.
105
+
106
+ ### Troubleshooting
107
+
108
+ ### Dialog + Dropdown usage
109
+
110
+ If you are facing a Dialog overlaping a Dropdown content, add this CSS to your application:
111
+
112
+ ```css
113
+ div[data-radix-popper-content-wrapper][data-aria-hidden='true'] {
114
+ opacity: 0;
115
+ }
116
+ ```
@@ -32,6 +32,10 @@ var Button = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRe
32
32
  justifyContent: 'center',
33
33
  height: '36px',
34
34
  py: 0,
35
+ textDecoration: props != null && props.to ? 'underline' : 'none',
36
+ '&:hover': {
37
+ textDecoration: 'none'
38
+ },
35
39
  '&:focus': function focus(theme) {
36
40
  return theme.outline;
37
41
  },
@@ -54,5 +58,6 @@ exports.Button = Button;
54
58
  Button.displayName = 'Button';
55
59
  Button.propTypes = {
56
60
  sx: _propTypes["default"].object,
61
+ to: _propTypes["default"].any,
57
62
  className: _propTypes["default"].any
58
63
  };
@@ -37,6 +37,14 @@ var Default = function Default() {
37
37
  ml: 2
38
38
  },
39
39
  children: "Secondary"
40
+ }), (0, _jsxRuntime.jsx)(_.Button, {
41
+ variant: "text",
42
+ sx: {
43
+ ml: 2
44
+ },
45
+ as: "a",
46
+ href: "https://google/com",
47
+ children: "Button link"
40
48
  })]
41
49
  });
42
50
  };
@@ -9,6 +9,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
+ var _react = _interopRequireDefault(require("react"));
13
+
12
14
  var _themeUi = require("theme-ui");
13
15
 
14
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -19,7 +21,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
19
21
 
20
22
  var _excluded = ["variant", "sx", "className"];
21
23
 
22
- var Heading = function Heading(_ref) {
24
+ var Heading = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
23
25
  var _ref$variant = _ref.variant,
24
26
  variant = _ref$variant === void 0 ? 'h3' : _ref$variant,
25
27
  sx = _ref.sx,
@@ -33,11 +35,13 @@ var Heading = function Heading(_ref) {
33
35
  // pass variant prop to sx
34
36
  variant: "text." + variant
35
37
  }, sx),
36
- className: (0, _classnames["default"])('vip-heading-component', className)
38
+ className: (0, _classnames["default"])('vip-heading-component', className),
39
+ ref: forwardRef
37
40
  }, props));
38
- };
41
+ });
39
42
 
40
43
  exports.Heading = Heading;
44
+ Heading.displayName = 'Heading';
41
45
  Heading.propTypes = {
42
46
  variant: _propTypes["default"].string,
43
47
  sx: _propTypes["default"].object,
@@ -33,9 +33,6 @@ var Default = function Default() {
33
33
  }), (0, _jsxRuntime.jsx)(_.Heading, {
34
34
  variant: "h5",
35
35
  children: "Heading Five"
36
- }), (0, _jsxRuntime.jsx)(_.Heading, {
37
- variant: "caps",
38
- children: "Heading Caps"
39
36
  })]
40
37
  });
41
38
  };
@@ -34,7 +34,8 @@ var Link = function Link(_ref) {
34
34
  color: 'links.active'
35
35
  },
36
36
  '&:hover, &:focus': {
37
- color: 'links.hover'
37
+ color: 'links.hover',
38
+ textDecoration: 'none'
38
39
  },
39
40
  '&:focus': function focus(theme) {
40
41
  return theme.outline;
@@ -4,10 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
6
 
7
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
-
9
7
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
8
 
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+
11
11
  var _react = require("@testing-library/react");
12
12
 
13
13
  var _jestAxe = require("jest-axe");
@@ -38,6 +38,15 @@ var defaultProps = {
38
38
  forLabel: 'my_desert_list',
39
39
  options: options
40
40
  };
41
+ var groupedProps = (0, _extends2["default"])({}, defaultProps, {
42
+ options: [{
43
+ label: 'Group name',
44
+ options: [options[0]]
45
+ }, {
46
+ label: 'Another Group name',
47
+ options: [options[1], options[2]]
48
+ }]
49
+ });
41
50
  describe('<FormSelect />', function () {
42
51
  it('renders the FormSelect component', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
43
52
  var _render, container;
@@ -50,22 +59,85 @@ describe('<FormSelect />', function () {
50
59
  id: "my_desert_list"
51
60
  }, defaultProps))), container = _render.container;
52
61
  expect(_react.screen.getByLabelText(defaultProps.label)).toBeInTheDocument();
53
- expect(_react.screen.getByRole('combobox')).toBeInTheDocument(); // Check for accessibility issues
62
+ expect(_react.screen.getByRole('combobox')).toBeInTheDocument();
63
+ expect(_react.screen.getAllByRole('option')).toHaveLength(3);
64
+ expect(_react.screen.queryByRole('group')).not.toBeInTheDocument(); // Check for accessibility issues
54
65
 
55
66
  _context.t0 = expect;
56
- _context.next = 6;
67
+ _context.next = 8;
57
68
  return (0, _jestAxe.axe)(container);
58
69
 
59
- case 6:
70
+ case 8:
60
71
  _context.t1 = _context.sent;
61
- _context.next = 9;
72
+ _context.next = 11;
62
73
  return (0, _context.t0)(_context.t1).toHaveNoViolations();
63
74
 
64
- case 9:
75
+ case 11:
65
76
  case "end":
66
77
  return _context.stop();
67
78
  }
68
79
  }
69
80
  }, _callee);
70
81
  })));
82
+ it('renders the FormSelect component with optgroup when options are grouped', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
83
+ var _render2, container;
84
+
85
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
86
+ while (1) {
87
+ switch (_context2.prev = _context2.next) {
88
+ case 0:
89
+ _render2 = (0, _react.render)((0, _jsxRuntime.jsx)(_FormSelect.FormSelect, (0, _extends2["default"])({
90
+ id: "my_desert_list"
91
+ }, groupedProps))), container = _render2.container;
92
+ expect(_react.screen.getByLabelText(defaultProps.label)).toBeInTheDocument();
93
+ expect(_react.screen.getByRole('combobox')).toBeInTheDocument();
94
+ expect(_react.screen.getAllByRole('option')).toHaveLength(3);
95
+ expect(_react.screen.getAllByRole('group')).toHaveLength(2); // Check for accessibility issues
96
+
97
+ _context2.t0 = expect;
98
+ _context2.next = 8;
99
+ return (0, _jestAxe.axe)(container);
100
+
101
+ case 8:
102
+ _context2.t1 = _context2.sent;
103
+ _context2.next = 11;
104
+ return (0, _context2.t0)(_context2.t1).toHaveNoViolations();
105
+
106
+ case 11:
107
+ case "end":
108
+ return _context2.stop();
109
+ }
110
+ }
111
+ }, _callee2);
112
+ })));
113
+ it('renders the FormSelect component when isInline is true', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
114
+ var _render3, container;
115
+
116
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
117
+ while (1) {
118
+ switch (_context3.prev = _context3.next) {
119
+ case 0:
120
+ _render3 = (0, _react.render)((0, _jsxRuntime.jsx)(_FormSelect.FormSelect, (0, _extends2["default"])({
121
+ id: "my_desert_list",
122
+ isInline: true
123
+ }, defaultProps))), container = _render3.container;
124
+ expect(_react.screen.getByLabelText(defaultProps.label)).toBeInTheDocument();
125
+ expect(_react.screen.getByRole('combobox')).toBeInTheDocument(); // Check for accessibility issues
126
+
127
+ _context3.t0 = expect;
128
+ _context3.next = 6;
129
+ return (0, _jestAxe.axe)(container);
130
+
131
+ case 6:
132
+ _context3.t1 = _context3.sent;
133
+ _context3.next = 9;
134
+ return (0, _context3.t0)(_context3.t1).toHaveNoViolations();
135
+
136
+ case 9:
137
+ case "end":
138
+ return _context3.stop();
139
+ }
140
+ }
141
+ }, _callee3);
142
+ })));
71
143
  });
@@ -9,49 +9,76 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
+ var _react = _interopRequireDefault(require("react"));
13
+
12
14
  var _themeUi = require("theme-ui");
13
15
 
14
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
17
 
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
16
20
  var _Spinner = require("../Spinner");
17
21
 
18
- var _ = require("../");
22
+ var _md = require("react-icons/md");
19
23
 
20
- var _classnames = _interopRequireDefault(require("classnames"));
24
+ var _ = require("../");
21
25
 
22
26
  var _jsxRuntime = require("theme-ui/jsx-runtime");
23
27
 
24
- var _excluded = ["steps", "activeStep", "sx", "className"];
28
+ var _excluded = ["steps", "activeStep", "sx", "forLabel", "className"];
29
+ var prefix = 'vip-progress-component';
30
+
31
+ var uniqueID = function uniqueID() {
32
+ return Math.random().toString(36).substring(7);
33
+ };
25
34
 
26
- var Progress = function Progress(_ref) {
35
+ var Progress = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
27
36
  var steps = _ref.steps,
28
37
  activeStep = _ref.activeStep,
29
38
  sx = _ref.sx,
39
+ _ref$forLabel = _ref.forLabel,
40
+ forLabel = _ref$forLabel === void 0 ? '' : _ref$forLabel,
30
41
  className = _ref.className,
31
42
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
43
+ var stepsTotal = steps.length;
44
+ var isDone = activeStep === stepsTotal - 1;
45
+ var instance = uniqueID();
46
+ var htmlFor = prefix + "-" + instance;
47
+ var currentValue = activeStep + 1;
32
48
  return (0, _jsxRuntime.jsxs)(_.Box, {
49
+ className: (0, _classnames["default"])(prefix, className),
33
50
  children: [(0, _jsxRuntime.jsx)(_themeUi.Progress, (0, _extends2["default"])({
34
- className: (0, _classnames["default"])('vip-progress-component', className)
35
- }, props, {
36
51
  sx: (0, _extends2["default"])({
37
- color: 'primary'
52
+ color: 'primary',
53
+ backgroundColor: 'background'
38
54
  }, sx),
39
- max: steps.length,
40
- value: activeStep + 1
41
- })), steps && (0, _jsxRuntime.jsxs)(_.Flex, {
55
+ max: stepsTotal,
56
+ value: currentValue,
57
+ id: htmlFor,
58
+ "aria-label": forLabel,
59
+ ref: forwardRef
60
+ }, props)), steps && (0, _jsxRuntime.jsxs)(_.Flex, {
42
61
  sx: {
43
62
  alignItems: 'center',
44
63
  mt: 2
45
64
  },
46
- children: [(0, _jsxRuntime.jsx)(_Spinner.Spinner, {
47
- size: 24
48
- }), (0, _jsxRuntime.jsxs)(_.Heading, {
49
- variant: "h4",
65
+ "aria-live": "polite",
66
+ "aria-atomic": "true",
67
+ "aria-describedby": htmlFor,
68
+ children: [!isDone && (0, _jsxRuntime.jsx)(_Spinner.Spinner, {
69
+ size: 24,
70
+ "aria-hidden": "true"
71
+ }), isDone && (0, _jsxRuntime.jsx)(_md.MdCheck, {
72
+ size: 24,
73
+ "aria-hidden": "true"
74
+ }), (0, _jsxRuntime.jsxs)(_.Text, {
50
75
  sx: {
51
76
  ml: 2,
52
77
  mb: 0
53
78
  },
54
- children: [activeStep + 1 + " of " + steps.length, ":", ' ', (0, _jsxRuntime.jsx)(_.Text, {
79
+ children: [(0, _jsxRuntime.jsxs)("strong", {
80
+ children: [currentValue + " of " + stepsTotal, ": "]
81
+ }), (0, _jsxRuntime.jsx)(_.Text, {
55
82
  as: "span",
56
83
  sx: {
57
84
  color: 'muted'
@@ -61,12 +88,14 @@ var Progress = function Progress(_ref) {
61
88
  })]
62
89
  })]
63
90
  });
64
- };
91
+ });
65
92
 
66
93
  exports.Progress = Progress;
94
+ Progress.displayName = 'Progress';
67
95
  Progress.propTypes = {
68
96
  steps: _propTypes["default"].array,
69
97
  activeStep: _propTypes["default"].number,
98
+ forLabel: _propTypes["default"].node,
70
99
  sx: _propTypes["default"].object,
71
100
  className: _propTypes["default"].any
72
101
  };
@@ -3,10 +3,16 @@
3
3
  exports.__esModule = true;
4
4
  exports["default"] = exports.Default = void 0;
5
5
 
6
+ var _react = _interopRequireWildcard(require("react"));
7
+
6
8
  var _ = require("..");
7
9
 
8
10
  var _jsxRuntime = require("theme-ui/jsx-runtime");
9
11
 
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
10
16
  /**
11
17
  * Internal dependencies
12
18
  */
@@ -17,11 +23,22 @@ var _default = {
17
23
  exports["default"] = _default;
18
24
 
19
25
  var Default = function Default() {
26
+ var _React$useState = _react["default"].useState(0),
27
+ counter = _React$useState[0],
28
+ setCounter = _React$useState[1];
29
+
30
+ var steps = ['Downloading Data', 'Importing Data...', 'Finalizing', 'Done'];
31
+ (0, _react.useEffect)(function () {
32
+ setTimeout(function () {
33
+ if (counter < steps.length - 1) {
34
+ setCounter(counter + 1);
35
+ }
36
+ }, 2000);
37
+ }, [counter, setCounter]);
20
38
  return (0, _jsxRuntime.jsx)(_.Progress, {
21
- max: 1,
22
- value: 1 / 2,
23
- steps: ['Downloading Data', 'Importing Data...', 'Finalizing'],
24
- activeStep: 1
39
+ forLabel: "Update site progress",
40
+ steps: steps,
41
+ activeStep: counter
25
42
  });
26
43
  };
27
44
 
@@ -9,6 +9,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
+ var _react = _interopRequireDefault(require("react"));
13
+
12
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
15
 
14
16
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -17,7 +19,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
17
19
 
18
20
  var _excluded = ["sx", "className"];
19
21
 
20
- var Table = function Table(_ref) {
22
+ var Table = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
21
23
  var sx = _ref.sx,
22
24
  className = _ref.className,
23
25
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
@@ -28,11 +30,13 @@ var Table = function Table(_ref) {
28
30
  }, sx),
29
31
  cellPadding: 0,
30
32
  cellSpacing: 0,
31
- className: (0, _classnames["default"])('vip-table-component', className)
33
+ className: (0, _classnames["default"])('vip-table-component', className),
34
+ ref: forwardRef
32
35
  }, props));
33
- };
36
+ });
34
37
 
35
38
  exports.Table = Table;
39
+ Table.displayName = 'Table';
36
40
  Table.propTypes = {
37
41
  sx: _propTypes["default"].object,
38
42
  className: _propTypes["default"].any
@@ -63,15 +63,13 @@ var Wizard = function Wizard(_ref) {
63
63
  }) : steps.map(function (_ref3, index) {
64
64
  var title = _ref3.title,
65
65
  subTitle = _ref3.subTitle,
66
- children = _ref3.children,
67
- titleVariant = _ref3.titleVariant;
66
+ children = _ref3.children;
68
67
  return (0, _jsxRuntime.jsx)(_.WizardStep, {
69
68
  active: index === activeStep,
70
69
  complete: completed.includes(index),
71
70
  order: index + 1,
72
71
  subTitle: subTitle,
73
72
  title: title,
74
- titleVariant: titleVariant,
75
73
  children: children
76
74
  }, index);
77
75
  })
@@ -3,7 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports["default"] = exports.Default = exports.CustomHeadingVariant = void 0;
6
+ exports["default"] = exports.Default = exports.CustomTitle = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -11,6 +11,8 @@ var _ = require("..");
11
11
 
12
12
  var _jsxRuntime = require("theme-ui/jsx-runtime");
13
13
 
14
+ /** @jsxImportSource theme-ui */
15
+
14
16
  /**
15
17
  * External dependencies
16
18
  */
@@ -83,16 +85,24 @@ var Default = function Default() {
83
85
 
84
86
  exports.Default = Default;
85
87
 
86
- var CustomHeadingVariant = function CustomHeadingVariant() {
88
+ var CustomTitle = function CustomTitle() {
87
89
  var steps = [{
88
- title: 'Choose Domain',
89
- titleVariant: 'h1',
90
- subTitle: (0, _jsxRuntime.jsx)("h2", {
90
+ title: (0, _jsxRuntime.jsx)("h3", {
91
+ sx: {
92
+ m: 0
93
+ },
94
+ children: "Choose Domain"
95
+ }),
96
+ subTitle: (0, _jsxRuntime.jsx)("span", {
91
97
  children: "You can bring a domain name you already own, or buy a new one."
92
98
  })
93
99
  }, {
94
- title: 'Configure DNS',
95
- titleVariant: 'h1'
100
+ title: (0, _jsxRuntime.jsx)("h3", {
101
+ sx: {
102
+ m: 0
103
+ },
104
+ children: "Configure DNS"
105
+ })
96
106
  }];
97
107
  return (0, _jsxRuntime.jsx)(_react["default"].Fragment, {
98
108
  children: (0, _jsxRuntime.jsx)(_.Wizard, {
@@ -103,4 +113,4 @@ var CustomHeadingVariant = function CustomHeadingVariant() {
103
113
  });
104
114
  };
105
115
 
106
- exports.CustomHeadingVariant = CustomHeadingVariant;
116
+ exports.CustomTitle = CustomTitle;
@@ -29,10 +29,8 @@ var WizardStep = function WizardStep(_ref) {
29
29
  complete = _ref$complete === void 0 ? false : _ref$complete,
30
30
  children = _ref.children,
31
31
  active = _ref.active,
32
- order = _ref.order,
33
- _ref$titleVariant = _ref.titleVariant,
34
- titleVariant = _ref$titleVariant === void 0 ? 'h4' : _ref$titleVariant;
35
- var borderLeftColor = 'borders.2';
32
+ order = _ref.order;
33
+ var borderLeftColor = 'border';
36
34
 
37
35
  if (complete) {
38
36
  borderLeftColor = 'success';
@@ -66,20 +64,30 @@ var WizardStep = function WizardStep(_ref) {
66
64
  },
67
65
  "data-step": order,
68
66
  "data-active": active || undefined,
69
- children: [(0, _jsxRuntime.jsxs)(_.Heading, {
70
- variant: titleVariant,
67
+ children: [typeof title === 'string' ? (0, _jsxRuntime.jsxs)(_.Heading, {
68
+ variant: "h4",
71
69
  sx: {
72
70
  mb: 0,
73
71
  display: 'flex',
74
72
  alignItems: 'center',
75
- color: color,
76
- fontSize: 2
73
+ color: color
77
74
  },
78
75
  children: [(0, _jsxRuntime.jsx)(_md.MdCheckCircle, {
76
+ "aria-hidden": "true",
79
77
  sx: {
80
78
  mr: 2
81
- },
82
- size: 18
79
+ }
80
+ }), title]
81
+ }) : (0, _jsxRuntime.jsxs)(_.Flex, {
82
+ sx: {
83
+ alignItems: 'center',
84
+ color: color
85
+ },
86
+ children: [(0, _jsxRuntime.jsx)(_md.MdCheckCircle, {
87
+ "aria-hidden": "true",
88
+ sx: {
89
+ mr: 2
90
+ }
83
91
  }), title]
84
92
  }), subTitle && active && (0, _jsxRuntime.jsx)(_.Text, {
85
93
  sx: {
@@ -97,6 +105,5 @@ WizardStep.propTypes = {
97
105
  complete: _propTypes["default"].bool,
98
106
  order: _propTypes["default"].number.isRequired,
99
107
  subTitle: _propTypes["default"].node,
100
- title: _propTypes["default"].node,
101
- titleVariant: _propTypes["default"].string
108
+ title: _propTypes["default"].node
102
109
  };
@@ -25,20 +25,31 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
25
25
  var WizardStepHorizontal = function WizardStepHorizontal(_ref) {
26
26
  var title = _ref.title,
27
27
  active = _ref.active,
28
- order = _ref.order,
29
- _ref$titleVariant = _ref.titleVariant,
30
- titleVariant = _ref$titleVariant === void 0 ? 'h4' : _ref$titleVariant;
31
- return (0, _jsxRuntime.jsxs)(_.Heading, {
32
- variant: titleVariant,
28
+ order = _ref.order;
29
+ var color = active ? 'heading' : 'muted';
30
+ return typeof title === 'string' ? (0, _jsxRuntime.jsxs)(_.Heading, {
31
+ variant: "h4",
33
32
  sx: {
34
33
  mb: 0,
35
34
  display: 'flex',
36
35
  alignItems: 'center',
37
- color: active ? 'heading' : 'muted'
36
+ color: color
38
37
  },
39
38
  "data-step": order,
40
39
  "data-active": active || undefined,
41
40
  children: [(0, _jsxRuntime.jsx)(_md.MdCheckCircle, {
41
+ "aria-hidden": "true",
42
+ sx: {
43
+ mr: 2
44
+ }
45
+ }), title]
46
+ }) : (0, _jsxRuntime.jsxs)(_.Flex, {
47
+ sx: {
48
+ alignItems: 'center',
49
+ color: color
50
+ },
51
+ children: [(0, _jsxRuntime.jsx)(_md.MdCheckCircle, {
52
+ "aria-hidden": "true",
42
53
  sx: {
43
54
  mr: 2
44
55
  }
@@ -51,6 +62,5 @@ WizardStepHorizontal.propTypes = {
51
62
  active: _propTypes["default"].bool,
52
63
  order: _propTypes["default"].number.isRequired,
53
64
  subTitle: _propTypes["default"].node,
54
- title: _propTypes["default"].node,
55
- titleVariant: _propTypes["default"].string
65
+ title: _propTypes["default"].node
56
66
  };
@@ -105,11 +105,6 @@ var _Spinner = require("./Spinner");
105
105
 
106
106
  exports.Spinner = _Spinner.Spinner;
107
107
 
108
- var _ResourceList = require("./ResourceList");
109
-
110
- exports.ResourceList = _ResourceList.ResourceList;
111
- exports.ResourceItem = _ResourceList.ResourceItem;
112
-
113
108
  var _Tooltip = require("./Tooltip");
114
109
 
115
110
  exports.Tooltip = _Tooltip.Tooltip;
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@automattic/vip-design-system",
3
- "version": "0.19.1",
3
+ "version": "0.20.0",
4
4
  "main": "build/system/index.js",
5
5
  "scripts": {
6
6
  "build-storybook": "build-storybook",
7
+ "prepare": "npm run build",
7
8
  "build": "npm run theme-update && cross-env NODE_ENV=production babel src --out-dir build && npm run theme-builder-copy",
8
9
  "format": "prettier --write \"src/**/*.{js,ts,tsx,md,mdx,json}\"",
9
10
  "format:check": "prettier --list-different -- \"src/system/**/*.{js,ts,tsx,md,mdx,json}\"",
@@ -17,6 +17,10 @@ const Button = React.forwardRef( ( { sx, ...props }, forwardRef ) => (
17
17
  justifyContent: 'center',
18
18
  height: '36px',
19
19
  py: 0,
20
+ textDecoration: props?.to ? 'underline' : 'none',
21
+ '&:hover': {
22
+ textDecoration: 'none',
23
+ },
20
24
  '&:focus': theme => theme.outline,
21
25
  '&:focus-visible': theme => theme.outline,
22
26
  '&:disabled': {
@@ -36,6 +40,7 @@ Button.displayName = 'Button';
36
40
 
37
41
  Button.propTypes = {
38
42
  sx: PropTypes.object,
43
+ to: PropTypes.any,
39
44
  className: PropTypes.any,
40
45
  };
41
46
 
@@ -19,5 +19,8 @@ export const Default = () => (
19
19
  <Button variant="secondary" sx={ { ml: 2 } }>
20
20
  Secondary
21
21
  </Button>
22
+ <Button variant="text" sx={ { ml: 2 } } as="a" href="https://google/com">
23
+ Button link
24
+ </Button>
22
25
  </React.Fragment>
23
26
  );