@automattic/vip-design-system 0.27.2 → 0.27.4

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.
@@ -19,6 +19,8 @@ var _Label = require("./Label");
19
19
 
20
20
  var _ScreenReaderText = require("../ScreenReaderText/ScreenReaderText");
21
21
 
22
+ var _theme = _interopRequireDefault(require("../theme"));
23
+
22
24
  var _jsxRuntime = require("theme-ui/jsx-runtime");
23
25
 
24
26
  var _excluded = ["children"],
@@ -33,10 +35,9 @@ var prefix = 'vip-radio-component-';
33
35
  var itemStyle = {
34
36
  display: 'flex',
35
37
  alignItems: 'center',
36
- minHeight: function minHeight(theme) {
37
- return theme.space[4] - theme.space[2] + "px";
38
- }
38
+ my: 2
39
39
  };
40
+ var radioPosition = _theme["default"].space[4] - _theme["default"].space[1];
40
41
  var inputStyle = (0, _extends2["default"])({}, _ScreenReaderText.screenReaderTextClass, {
41
42
  width: '16px',
42
43
  height: '16px',
@@ -46,7 +47,7 @@ var inputStyle = (0, _extends2["default"])({}, _ScreenReaderText.screenReaderTex
46
47
  border: '2px solid',
47
48
  borderColor: 'border',
48
49
  zIndex: 3,
49
- left: -1 * (theme.space[4] - theme.space[2]) + "px"
50
+ left: -1 * radioPosition + "px"
50
51
  });
51
52
  },
52
53
  '&:checked ~ label::after': {
@@ -57,9 +58,7 @@ var inputStyle = (0, _extends2["default"])({}, _ScreenReaderText.screenReaderTex
57
58
  var labelStyle = {
58
59
  cursor: 'pointer',
59
60
  position: 'relative',
60
- marginLeft: function marginLeft(theme) {
61
- return theme.space[4] - theme.space[2] + "px";
62
- },
61
+ marginLeft: radioPosition + "px",
63
62
  marginBottom: 0,
64
63
  userSelect: 'none',
65
64
  color: 'heading',
@@ -68,9 +67,7 @@ var labelStyle = {
68
67
  borderRadius: '50%',
69
68
  position: 'absolute',
70
69
  top: 0,
71
- left: function left(theme) {
72
- return -1 * (theme.space[4] - theme.space[2]) + "px";
73
- },
70
+ left: -1 * radioPosition + "px",
74
71
  transition: 'all .3s ease-out',
75
72
  zIndex: 2,
76
73
  width: '16px',
@@ -36,12 +36,15 @@ var NewTabs = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
36
36
  onValueChange = _ref$onValueChange === void 0 ? undefined : _ref$onValueChange,
37
37
  _ref$defaultValue = _ref.defaultValue,
38
38
  defaultValue = _ref$defaultValue === void 0 ? undefined : _ref$defaultValue,
39
+ _ref$value = _ref.value,
40
+ value = _ref$value === void 0 ? undefined : _ref$value,
39
41
  _ref$className = _ref.className,
40
42
  className = _ref$className === void 0 ? null : _ref$className,
41
43
  _ref$sx = _ref.sx,
42
44
  sx = _ref$sx === void 0 ? {} : _ref$sx;
43
45
  return (0, _jsxRuntime.jsx)(TabsPrimitive.Root, {
44
46
  ref: ref,
47
+ value: value,
45
48
  defaultValue: defaultValue,
46
49
  onValueChange: onValueChange,
47
50
  className: (0, _classnames["default"])('vip-tabs-component', className),
@@ -55,6 +58,7 @@ NewTabs.propTypes = {
55
58
  className: _propTypes["default"].any,
56
59
  sx: _propTypes["default"].object,
57
60
  defaultValue: _propTypes["default"].node,
61
+ value: _propTypes["default"].node,
58
62
  onValueChange: _propTypes["default"].func,
59
63
  children: _propTypes["default"].node.isRequired
60
64
  };
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
- exports["default"] = exports.Default = void 0;
6
+ exports["default"] = exports.SetActiveTab = exports.Default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
5
9
 
6
10
  var _ = require("..");
7
11
 
8
12
  var _jsxRuntime = require("theme-ui/jsx-runtime");
9
13
 
14
+ /**
15
+ * External dependencies
16
+ */
17
+
10
18
  /**
11
19
  * Internal dependencies
12
20
  */
@@ -58,4 +66,58 @@ var Default = function Default() {
58
66
  });
59
67
  };
60
68
 
61
- exports.Default = Default;
69
+ exports.Default = Default;
70
+
71
+ var SetActiveTab = function SetActiveTab() {
72
+ var _React$useState = _react["default"].useState('all'),
73
+ activeTab = _React$useState[0],
74
+ setActiveTab = _React$useState[1];
75
+
76
+ return (0, _jsxRuntime.jsxs)(_.NewTabs, {
77
+ value: activeTab,
78
+ onValueChange: function onValueChange(val) {
79
+ return setActiveTab(val);
80
+ },
81
+ children: [(0, _jsxRuntime.jsxs)(_.TabsList, {
82
+ title: "See all the content",
83
+ children: [(0, _jsxRuntime.jsx)(_.TabsTrigger, {
84
+ value: "all",
85
+ children: "All (5)"
86
+ }), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
87
+ value: "live",
88
+ children: "Live (2)"
89
+ }), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
90
+ value: "dev",
91
+ children: "In Development (3)"
92
+ }), (0, _jsxRuntime.jsx)(_.TabsTrigger, {
93
+ value: "protect",
94
+ disabled: true,
95
+ children: "Not accessible"
96
+ })]
97
+ }), (0, _jsxRuntime.jsx)(_.TabsContent, {
98
+ value: "all",
99
+ children: (0, _jsxRuntime.jsx)(_.Text, {
100
+ children: (0, _jsxRuntime.jsx)("button", {
101
+ type: "button",
102
+ onClick: function onClick() {
103
+ return setActiveTab('live');
104
+ },
105
+ children: "Switch to live tab"
106
+ })
107
+ })
108
+ }), (0, _jsxRuntime.jsx)(_.TabsContent, {
109
+ value: "live",
110
+ children: "Live content"
111
+ }), (0, _jsxRuntime.jsx)(_.TabsContent, {
112
+ value: "dev",
113
+ children: (0, _jsxRuntime.jsxs)(_.Text, {
114
+ children: ["In Development content ", (0, _jsxRuntime.jsx)("button", {
115
+ type: "button",
116
+ children: "Hey I am a button"
117
+ }), ' ']
118
+ })
119
+ })]
120
+ });
121
+ };
122
+
123
+ exports.SetActiveTab = SetActiveTab;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automattic/vip-design-system",
3
- "version": "0.27.2",
3
+ "version": "0.27.4",
4
4
  "main": "build/system/index.js",
5
5
  "scripts": {
6
6
  "build-storybook": "build-storybook",
@@ -9,15 +9,18 @@ import PropTypes from 'prop-types';
9
9
  import classNames from 'classnames';
10
10
  import { Label } from './Label';
11
11
  import { screenReaderTextClass } from '../ScreenReaderText/ScreenReaderText';
12
+ import mainTheme from '../theme';
12
13
 
13
14
  const prefix = 'vip-radio-component-';
14
15
 
15
16
  const itemStyle = {
16
17
  display: 'flex',
17
18
  alignItems: 'center',
18
- minHeight: theme => `${ theme.space[ 4 ] - theme.space[ 2 ] }px`,
19
+ my: 2,
19
20
  };
20
21
 
22
+ const radioPosition = mainTheme.space[ 4 ] - mainTheme.space[ 1 ];
23
+
21
24
  const inputStyle = {
22
25
  ...screenReaderTextClass,
23
26
  width: '16px',
@@ -28,7 +31,7 @@ const inputStyle = {
28
31
  border: '2px solid',
29
32
  borderColor: 'border',
30
33
  zIndex: 3,
31
- left: `${ -1 * ( theme.space[ 4 ] - theme.space[ 2 ] ) }px`,
34
+ left: `${ -1 * radioPosition }px`,
32
35
  } ),
33
36
  '&:checked ~ label::after': {
34
37
  opacity: 1,
@@ -39,7 +42,7 @@ const inputStyle = {
39
42
  const labelStyle = {
40
43
  cursor: 'pointer',
41
44
  position: 'relative',
42
- marginLeft: theme => `${ theme.space[ 4 ] - theme.space[ 2 ] }px`,
45
+ marginLeft: `${ radioPosition }px`,
43
46
  marginBottom: 0,
44
47
  userSelect: 'none',
45
48
  color: 'heading',
@@ -48,7 +51,7 @@ const labelStyle = {
48
51
  borderRadius: '50%',
49
52
  position: 'absolute',
50
53
  top: 0,
51
- left: theme => `${ -1 * ( theme.space[ 4 ] - theme.space[ 2 ] ) }px`,
54
+ left: `${ -1 * radioPosition }px`,
52
55
  transition: 'all .3s ease-out',
53
56
  zIndex: 2,
54
57
  width: '16px',
@@ -14,12 +14,20 @@ import React from 'react';
14
14
 
15
15
  const NewTabs = React.forwardRef(
16
16
  (
17
- { children, onValueChange = undefined, defaultValue = undefined, className = null, sx = {} },
17
+ {
18
+ children,
19
+ onValueChange = undefined,
20
+ defaultValue = undefined,
21
+ value = undefined,
22
+ className = null,
23
+ sx = {},
24
+ },
18
25
  ref
19
26
  ) => {
20
27
  return (
21
28
  <TabsPrimitive.Root
22
29
  ref={ ref }
30
+ value={ value }
23
31
  defaultValue={ defaultValue }
24
32
  onValueChange={ onValueChange }
25
33
  className={ classNames( 'vip-tabs-component', className ) }
@@ -35,6 +43,7 @@ NewTabs.propTypes = {
35
43
  className: PropTypes.any,
36
44
  sx: PropTypes.object,
37
45
  defaultValue: PropTypes.node,
46
+ value: PropTypes.node,
38
47
  onValueChange: PropTypes.func,
39
48
  children: PropTypes.node.isRequired,
40
49
  };
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
@@ -31,3 +36,32 @@ export const Default = () => (
31
36
  </TabsContent>
32
37
  </NewTabs>
33
38
  );
39
+ export const SetActiveTab = () => {
40
+ const [ activeTab, setActiveTab ] = React.useState( 'all' );
41
+
42
+ return (
43
+ <NewTabs value={ activeTab } onValueChange={ val => setActiveTab( val ) }>
44
+ <TabsList title="See all the content">
45
+ <TabsTrigger value="all">All (5)</TabsTrigger>
46
+ <TabsTrigger value="live">Live (2)</TabsTrigger>
47
+ <TabsTrigger value="dev">In Development (3)</TabsTrigger>
48
+ <TabsTrigger value="protect" disabled={ true }>
49
+ Not accessible
50
+ </TabsTrigger>
51
+ </TabsList>
52
+ <TabsContent value="all">
53
+ <Text>
54
+ <button type="button" onClick={ () => setActiveTab( 'live' ) }>
55
+ Switch to live tab
56
+ </button>
57
+ </Text>
58
+ </TabsContent>
59
+ <TabsContent value="live">Live content</TabsContent>
60
+ <TabsContent value="dev">
61
+ <Text>
62
+ In Development content <button type="button">Hey I am a button</button>{ ' ' }
63
+ </Text>
64
+ </TabsContent>
65
+ </NewTabs>
66
+ );
67
+ };