@automattic/vip-design-system 0.14.1 → 0.16.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 (38) hide show
  1. package/.prettierignore +1 -0
  2. package/README.md +26 -0
  3. package/build/system/Button/Button.js +9 -4
  4. package/build/system/NewDialog/DialogClose.js +26 -11
  5. package/build/system/NewDialog/DialogClose.test.js +1 -1
  6. package/build/system/NewDialog/DialogContent.js +1 -1
  7. package/build/system/NewDialog/DialogDescription.js +4 -1
  8. package/build/system/NewDialog/DialogTitle.js +4 -1
  9. package/build/system/NewDialog/NewDialog.js +13 -23
  10. package/build/system/NewDialog/NewDialog.stories.js +87 -9
  11. package/build/system/NewDialog/index.js +14 -1
  12. package/build/system/Notification/Notification.js +1 -1
  13. package/build/system/ScreenReaderText/ScreenReader.test.js +2 -2
  14. package/build/system/ScreenReaderText/ScreenReaderText.js +9 -4
  15. package/build/system/ScreenReaderText/index.js +8 -1
  16. package/build/system/index.js +8 -3
  17. package/build/system/theme/generated/valet-theme.json +2429 -0
  18. package/build/system/theme/getColor.js +3 -21
  19. package/build/system/theme/index.js +1 -1
  20. package/package.json +8 -5
  21. package/src/system/Button/Button.js +7 -3
  22. package/src/system/NewDialog/DialogClose.js +18 -4
  23. package/src/system/NewDialog/DialogClose.test.js +1 -1
  24. package/src/system/NewDialog/DialogContent.js +1 -1
  25. package/src/system/NewDialog/DialogDescription.js +2 -2
  26. package/src/system/NewDialog/DialogTitle.js +2 -2
  27. package/src/system/NewDialog/NewDialog.js +14 -20
  28. package/src/system/NewDialog/NewDialog.stories.jsx +69 -7
  29. package/src/system/NewDialog/index.js +7 -1
  30. package/src/system/Notification/Notification.js +1 -1
  31. package/src/system/ScreenReaderText/ScreenReader.test.js +1 -1
  32. package/src/system/ScreenReaderText/ScreenReaderText.js +24 -22
  33. package/src/system/ScreenReaderText/index.js +2 -0
  34. package/src/system/index.js +1 -1
  35. package/src/system/theme/generated/valet-theme.json +2429 -0
  36. package/src/system/theme/getColor.js +3 -19
  37. package/src/system/theme/index.js +1 -1
  38. package/tokens/valet-color.json +0 -6164
@@ -0,0 +1 @@
1
+ src/system/theme/generated
package/README.md CHANGED
@@ -41,6 +41,32 @@ For components that include storybooks, we can run `npm run storybook` to view t
41
41
 
42
42
  Note: it's super useful to run `npm run watch` in another process, so any changes will be almost immediately available / testable.
43
43
 
44
+ ### Updating the Theme with VIP Design System Tokens
45
+
46
+ You need to update the tokens once the VIP Design System updates the core files.
47
+
48
+ #### How the theming works
49
+
50
+ We use the VIP Design System Tokens as our base theme structure. All colors, spaces, types should come from a dynamic token system provided by the VIP Design team, currently using Figma as the design software. When the design system is updated by the Design team, they push a file to the root of this repository: `tokens/valet-core.json`.
51
+
52
+ By using the [Token Transformer](https://docs.tokens.studio/sync/github#7-how-to-use-tokens-stored-in-github-in-development) and a custom npm script, we parse this file getting only the VIP Dashboard theme we need for the react components. The theme is called: `productive-color-wpvip`.
53
+
54
+ Once the new file is updated, we need to generate a custom theme file in `src/generated/valet-theme.json`. This operation generates a small json file with the colors we need already filled in.
55
+
56
+ Once the theme is updated, the file `src/system/theme/index.js` reads the colors and apply to all components.
57
+
58
+ Use the section below to run the script and update the theme.
59
+
60
+ _Important:_ If you change the `generated/valet-theme.json`, make it sure to open a new pull request with these changes and release a new version if needed.
61
+
62
+ #### Update theme script
63
+
64
+ Run this command to update the VIP Valet Theme with the latest `tokens/valet-core.json`.
65
+
66
+ ```bash
67
+ npm run theme-update
68
+ ```
69
+
44
70
  ### Publish NPM Package Instructions
45
71
 
46
72
  Once all the changes needed are merged to trunk, and you are ready to release a new version, follow these steps:
@@ -9,17 +9,19 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
- var _themeUi = require("theme-ui");
12
+ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
16
  var _classnames = _interopRequireDefault(require("classnames"));
17
17
 
18
+ var _themeUi = require("theme-ui");
19
+
18
20
  var _jsxRuntime = require("theme-ui/jsx-runtime");
19
21
 
20
22
  var _excluded = ["sx"];
21
23
 
22
- var Button = function Button(_ref) {
24
+ var Button = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
23
25
  var sx = _ref.sx,
24
26
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
25
27
  return (0, _jsxRuntime.jsx)(_themeUi.Button, (0, _extends2["default"])({
@@ -43,10 +45,13 @@ var Button = function Button(_ref) {
43
45
  }
44
46
  }, sx),
45
47
  className: (0, _classnames["default"])('vip-button-component', props.className)
46
- }, props));
47
- };
48
+ }, props, {
49
+ ref: forwardRef
50
+ }));
51
+ });
48
52
 
49
53
  exports.Button = Button;
54
+ Button.displayName = 'Button';
50
55
  Button.propTypes = {
51
56
  sx: _propTypes["default"].object,
52
57
  className: _propTypes["default"].any
@@ -3,35 +3,50 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports.DialogClose = void 0;
6
+ exports.DialogCloseDefault = exports.DialogClose = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
12
16
  var DialogPrimitive = _interopRequireWildcard(require("@radix-ui/react-dialog"));
13
17
 
14
18
  var _io = require("react-icons/io5");
15
19
 
16
20
  var _jsxRuntime = require("theme-ui/jsx-runtime");
17
21
 
22
+ var _excluded = ["children"];
23
+
18
24
  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); }
19
25
 
20
26
  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; }
21
27
 
22
- /** @jsxImportSource theme-ui */
23
-
24
- /**
25
- * External dependencies
26
- */
27
-
28
28
  /**
29
29
  * Internal dependencies
30
30
  */
31
- var DialogClose = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardedRef) {
31
+ var DialogClose = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardedRef) {
32
+ var children = _ref.children,
33
+ rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
32
34
  return (0, _jsxRuntime.jsx)(DialogPrimitive.Close, (0, _extends2["default"])({
33
35
  asChild: true
34
- }, props, {
36
+ }, rest, {
37
+ ref: forwardedRef,
38
+ children: children
39
+ }));
40
+ });
41
+
42
+ exports.DialogClose = DialogClose;
43
+ DialogClose.propTypes = {
44
+ children: _propTypes["default"].node
45
+ };
46
+ DialogClose.displayName = 'DialogClose';
47
+
48
+ var DialogCloseDefault = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardedRef) {
49
+ return (0, _jsxRuntime.jsx)(DialogClose, (0, _extends2["default"])({}, props, {
35
50
  ref: forwardedRef,
36
51
  children: (0, _jsxRuntime.jsx)("button", {
37
52
  "aria-label": "Close",
@@ -72,5 +87,5 @@ var DialogClose = /*#__PURE__*/_react["default"].forwardRef(function (props, for
72
87
  }));
73
88
  });
74
89
 
75
- exports.DialogClose = DialogClose;
76
- DialogClose.displayName = 'DialogClose';
90
+ exports.DialogCloseDefault = DialogCloseDefault;
91
+ DialogCloseDefault.displayName = 'DialogCloseDefault';
@@ -44,7 +44,7 @@ describe('<DialogClose />', function () {
44
44
  switch (_context.prev = _context.next) {
45
45
  case 0:
46
46
  _render = (0, _react.render)((0, _jsxRuntime.jsx)(Wrapper, {
47
- children: (0, _jsxRuntime.jsx)(_DialogClose.DialogClose, (0, _extends2["default"])({}, defaultProps))
47
+ children: (0, _jsxRuntime.jsx)(_DialogClose.DialogCloseDefault, (0, _extends2["default"])({}, defaultProps))
48
48
  })), container = _render.container;
49
49
  expect(_react.screen.getByLabelText('Close')).toBeInTheDocument(); // Check for accessibility issues
50
50
 
@@ -15,7 +15,7 @@ var contentStyles = {
15
15
  width: '90vw',
16
16
  maxWidth: '640px',
17
17
  maxHeight: '85vh',
18
- padding: 25,
18
+ padding: 32,
19
19
  '&:focus': {
20
20
  outline: 'none'
21
21
  },
@@ -15,7 +15,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
16
  var DialogPrimitive = _interopRequireWildcard(require("@radix-ui/react-dialog"));
17
17
 
18
- var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText/ScreenReaderText"));
18
+ var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
19
19
 
20
20
  var _jsxRuntime = require("theme-ui/jsx-runtime");
21
21
 
@@ -42,6 +42,9 @@ var DialogDescription = /*#__PURE__*/_react["default"].forwardRef(function (_ref
42
42
 
43
43
  return (0, _jsxRuntime.jsx)(DialogPrimitive.Description, (0, _extends2["default"])({}, rest, {
44
44
  ref: forwardedRef,
45
+ sx: {
46
+ margin: 0
47
+ },
45
48
  children: text
46
49
  }));
47
50
  });
@@ -9,7 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
10
  var DialogPrimitive = _interopRequireWildcard(require("@radix-ui/react-dialog"));
11
11
 
12
- var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText/ScreenReaderText"));
12
+ var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
13
13
 
14
14
  var _jsxRuntime = require("theme-ui/jsx-runtime");
15
15
 
@@ -39,6 +39,9 @@ var DialogTitle = function DialogTitle(_ref) {
39
39
  }
40
40
 
41
41
  return (0, _jsxRuntime.jsx)(DialogPrimitive.Title, {
42
+ sx: {
43
+ margin: 0
44
+ },
42
45
  children: titleNode
43
46
  });
44
47
  };
@@ -52,22 +52,21 @@ var NewDialog = function NewDialog(_ref) {
52
52
  defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
53
53
  _ref$allowPinchZoom = _ref.allowPinchZoom,
54
54
  allowPinchZoom = _ref$allowPinchZoom === void 0 ? false : _ref$allowPinchZoom,
55
- _ref$onOpenAutoFocus = _ref.onOpenAutoFocus,
56
- onOpenAutoFocus = _ref$onOpenAutoFocus === void 0 ? null : _ref$onOpenAutoFocus,
57
- _ref$onCloseAutoFocus = _ref.onCloseAutoFocus,
58
- onCloseAutoFocus = _ref$onCloseAutoFocus === void 0 ? null : _ref$onCloseAutoFocus,
59
- _ref$onEscapeKeyDown = _ref.onEscapeKeyDown,
60
- onEscapeKeyDown = _ref$onEscapeKeyDown === void 0 ? null : _ref$onEscapeKeyDown,
61
- _ref$onPointerDownOut = _ref.onPointerDownOutside,
62
- onPointerDownOutside = _ref$onPointerDownOut === void 0 ? null : _ref$onPointerDownOut,
63
- _ref$onInteractOutsid = _ref.onInteractOutside,
64
- onInteractOutside = _ref$onInteractOutsid === void 0 ? null : _ref$onInteractOutsid;
55
+ _ref$onOpenChange = _ref.onOpenChange,
56
+ onOpenChange = _ref$onOpenChange === void 0 ? undefined : _ref$onOpenChange,
57
+ _ref$open = _ref.open,
58
+ open = _ref$open === void 0 ? undefined : _ref$open,
59
+ _ref$id = _ref.id,
60
+ id = _ref$id === void 0 ? undefined : _ref$id;
65
61
 
66
62
  if (disabled) {
67
63
  return;
68
64
  }
69
65
 
70
66
  return (0, _jsxRuntime.jsxs)(DialogPrimitive.Root, {
67
+ id: id,
68
+ open: open,
69
+ onOpenChange: onOpenChange,
71
70
  defaultOpen: defaultOpen,
72
71
  allowPinchZoom: allowPinchZoom,
73
72
  children: [trigger && (0, _jsxRuntime.jsx)(DialogPrimitive.Trigger, {
@@ -77,12 +76,7 @@ var NewDialog = function NewDialog(_ref) {
77
76
  children: [(0, _jsxRuntime.jsx)(_DialogOverlay.DialogOverlay, {}), (0, _jsxRuntime.jsxs)(DialogPrimitive.Content, {
78
77
  className: "vip-dialog-component",
79
78
  sx: (0, _extends2["default"])({}, _DialogContent.contentStyles, extraStyles),
80
- onOpenAutoFocus: onOpenAutoFocus,
81
- onCloseAutoFocus: onCloseAutoFocus,
82
- onEscapeKeyDown: onEscapeKeyDown,
83
- onPointerDownOutside: onPointerDownOutside,
84
- onInteractOutside: onInteractOutside,
85
- children: [(0, _jsxRuntime.jsx)(_DialogClose.DialogClose, {}), (0, _jsxRuntime.jsx)(_DialogTitle.DialogTitle, {
79
+ children: [(0, _jsxRuntime.jsx)(_DialogClose.DialogCloseDefault, {}), (0, _jsxRuntime.jsx)(_DialogTitle.DialogTitle, {
86
80
  title: title,
87
81
  hidden: !showHeading
88
82
  }), (0, _jsxRuntime.jsx)(_DialogDescription.DialogDescription, {
@@ -108,13 +102,9 @@ NewDialog.propTypes = {
108
102
  style: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].func]),
109
103
  // Radix DialogPrimitive.Root properties
110
104
  // https://www.radix-ui.com/docs/primitives/components/dialog#root
105
+ id: _propTypes["default"].string,
106
+ open: _propTypes["default"].bool,
111
107
  defaultOpen: _propTypes["default"].bool,
112
108
  allowPinchZoom: _propTypes["default"].bool,
113
- // Radix DialogPrimitive.Content properties
114
- // https://www.radix-ui.com/docs/primitives/components/dialog#content
115
- onOpenAutoFocus: _propTypes["default"].func,
116
- onCloseAutoFocus: _propTypes["default"].func,
117
- onEscapeKeyDown: _propTypes["default"].func,
118
- onPointerDownOutside: _propTypes["default"].func,
119
- onInteractOutside: _propTypes["default"].func
109
+ onOpenChange: _propTypes["default"].func
120
110
  };
@@ -3,27 +3,37 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports["default"] = exports.HiddenHeadings = exports.Default = exports.CustomStyling = exports.AutoOpen = void 0;
6
+ exports["default"] = exports.HiddenHeadings = exports.Default = exports.CustomStyling = exports.CustomStateManagement = exports.CustomClose = exports.AutoOpen = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _react = require("react");
11
+
10
12
  var _system = require("../../system");
11
13
 
12
- var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText/ScreenReaderText"));
14
+ var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
13
15
 
14
- var _NewDialog = require("./NewDialog");
16
+ var NewDialog = _interopRequireWildcard(require("."));
15
17
 
16
18
  var _jsxRuntime = require("theme-ui/jsx-runtime");
17
19
 
20
+ 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); }
21
+
22
+ 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; }
23
+
18
24
  /** @jsxImportSource theme-ui */
19
25
 
26
+ /**
27
+ * External dependencies
28
+ */
29
+
20
30
  /**
21
31
  /**
22
32
  * Internal dependencies
23
33
  */
24
34
  var _default = {
25
35
  title: 'NewDialog',
26
- component: _NewDialog.NewDialog
36
+ component: NewDialog.Root
27
37
  };
28
38
  exports["default"] = _default;
29
39
  var defaultProps = {
@@ -39,7 +49,7 @@ var Default = function Default() {
39
49
  mb: 3
40
50
  },
41
51
  children: "Regular Dialog where the title and description are built-in and the content is provided by the user."
42
- }), (0, _jsxRuntime.jsx)(_NewDialog.NewDialog, (0, _extends2["default"])({}, defaultProps, {
52
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
43
53
  trigger: (0, _jsxRuntime.jsx)(_system.Button, {
44
54
  children: "Trigger Dialog"
45
55
  })
@@ -57,8 +67,15 @@ var AutoOpen = function AutoOpen() {
57
67
  mb: 3
58
68
  },
59
69
  children: "Auto Opens when rendered. Press escape to close it."
60
- }), (0, _jsxRuntime.jsx)(_NewDialog.NewDialog, (0, _extends2["default"])({}, defaultProps, {
70
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
61
71
  defaultOpen: true,
72
+ content: (0, _jsxRuntime.jsxs)("div", {
73
+ children: [(0, _jsxRuntime.jsx)("h3", {
74
+ children: "Test"
75
+ }), (0, _jsxRuntime.jsx)("p", {
76
+ children: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."
77
+ })]
78
+ }),
62
79
  trigger: (0, _jsxRuntime.jsx)(_ScreenReaderText["default"], {
63
80
  children: "hey"
64
81
  })
@@ -76,7 +93,7 @@ var HiddenHeadings = function HiddenHeadings() {
76
93
  mb: 3
77
94
  },
78
95
  children: "Title and description are hidden, but still announced using a screen reader. Activate VoiceOver or any similar screen reader to listen to: Custom dialog title, Description of the dialog content."
79
- }), (0, _jsxRuntime.jsx)(_NewDialog.NewDialog, (0, _extends2["default"])({}, defaultProps, {
96
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
80
97
  trigger: (0, _jsxRuntime.jsx)(_system.Button, {
81
98
  children: "Trigger Dialog"
82
99
  }),
@@ -117,7 +134,7 @@ var CustomStyling = function CustomStyling() {
117
134
  mb: 3
118
135
  },
119
136
  children: "Custom Styling on Dialog Content"
120
- }), (0, _jsxRuntime.jsx)(_NewDialog.NewDialog, (0, _extends2["default"])({}, defaultProps, {
137
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
121
138
  defaultOpen: true,
122
139
  trigger: (0, _jsxRuntime.jsx)(_system.Button, {
123
140
  children: "Trigger Dialog"
@@ -160,4 +177,65 @@ var CustomStyling = function CustomStyling() {
160
177
  });
161
178
  };
162
179
 
163
- exports.CustomStyling = CustomStyling;
180
+ exports.CustomStyling = CustomStyling;
181
+
182
+ var CustomClose = function CustomClose() {
183
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
184
+ children: [(0, _jsxRuntime.jsx)(_system.Text, {
185
+ sx: {
186
+ fontSize: 3,
187
+ mb: 3
188
+ },
189
+ children: "This example shows how you can create a custom Close trigger to your dialog"
190
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
191
+ trigger: (0, _jsxRuntime.jsx)(_system.Button, {
192
+ children: "Trigger Dialog"
193
+ }),
194
+ content: (0, _jsxRuntime.jsx)("div", {
195
+ children: (0, _jsxRuntime.jsx)(NewDialog.Close, {
196
+ children: (0, _jsxRuntime.jsx)(_system.Button, {
197
+ children: "Close here instead"
198
+ })
199
+ })
200
+ })
201
+ }))]
202
+ });
203
+ };
204
+
205
+ exports.CustomClose = CustomClose;
206
+
207
+ var CustomStateManagement = function CustomStateManagement() {
208
+ var _useState = (0, _react.useState)(false),
209
+ open = _useState[0],
210
+ setOpen = _useState[1];
211
+
212
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
213
+ children: [(0, _jsxRuntime.jsxs)(_system.Text, {
214
+ sx: {
215
+ fontSize: 3,
216
+ mb: 3
217
+ },
218
+ children: ["This example shows how you can create a custom state management. To achieve accessibility, you need to control the ", (0, _jsxRuntime.jsx)("strong", {
219
+ children: "open"
220
+ }), " state, but also keep consistency using the", ' ', (0, _jsxRuntime.jsx)("strong", {
221
+ children: "onOpenChange"
222
+ }), " attribute."]
223
+ }), (0, _jsxRuntime.jsx)(NewDialog.Root, (0, _extends2["default"])({}, defaultProps, {
224
+ open: open,
225
+ onOpenChange: setOpen,
226
+ trigger: (0, _jsxRuntime.jsx)(_system.Button, {
227
+ children: "Trigger Dialog"
228
+ }),
229
+ content: (0, _jsxRuntime.jsx)("div", {
230
+ children: (0, _jsxRuntime.jsx)(_system.Button, {
231
+ onClick: function onClick() {
232
+ return setOpen(false);
233
+ },
234
+ children: "Close here instead"
235
+ })
236
+ })
237
+ }))]
238
+ });
239
+ };
240
+
241
+ exports.CustomStateManagement = CustomStateManagement;
@@ -1,7 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ exports["default"] = exports.Root = exports.Close = void 0;
5
+
6
+ var _DialogClose = require("./DialogClose");
4
7
 
5
8
  var _NewDialog = require("./NewDialog");
6
9
 
7
- exports.NewDialog = _NewDialog.NewDialog;
10
+ exports.NewDialog = _NewDialog.NewDialog;
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ var Root = _NewDialog.NewDialog;
16
+ exports.Root = Root;
17
+ var Close = _DialogClose.DialogClose;
18
+ exports.Close = Close;
19
+ var _default = _NewDialog.NewDialog;
20
+ exports["default"] = _default;
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _ = require("../");
13
13
 
14
- var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText/ScreenReaderText"));
14
+ var _ScreenReaderText = _interopRequireDefault(require("../ScreenReaderText"));
15
15
 
16
16
  var _jsxRuntime = require("theme-ui/jsx-runtime");
17
17
 
@@ -8,7 +8,7 @@ var _react = require("@testing-library/react");
8
8
 
9
9
  require("@testing-library/jest-dom");
10
10
 
11
- var _ScreenReaderText = _interopRequireDefault(require("./ScreenReaderText"));
11
+ var _ = _interopRequireDefault(require("."));
12
12
 
13
13
  var _jsxRuntime = require("theme-ui/jsx-runtime");
14
14
 
@@ -24,7 +24,7 @@ describe('<ScreenReaderText />', function () {
24
24
  var props = {};
25
25
  var text = 'Hello there';
26
26
 
27
- var _render = (0, _react.render)((0, _jsxRuntime.jsx)(_ScreenReaderText["default"], (0, _extends2["default"])({}, props, {
27
+ var _render = (0, _react.render)((0, _jsxRuntime.jsx)(_["default"], (0, _extends2["default"])({}, props, {
28
28
  children: text
29
29
  }))),
30
30
  container = _render.container; // we're using the querySelector to ensure the class is rendered since it affects the A11Y
@@ -3,10 +3,12 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
- exports["default"] = ScreenReaderText;
6
+ exports.ScreenReaderText = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _react = _interopRequireDefault(require("react"));
11
+
10
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
13
 
12
14
  var _jsxRuntime = require("theme-ui/jsx-runtime");
@@ -20,7 +22,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
20
22
  /**
21
23
  * Internal dependencies
22
24
  */
23
- function ScreenReaderText(props) {
25
+ var ScreenReaderText = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
24
26
  return (0, _jsxRuntime.jsx)("span", (0, _extends2["default"])({
25
27
  className: "screen-reader-text",
26
28
  sx: {
@@ -36,14 +38,17 @@ function ScreenReaderText(props) {
36
38
  wordWrap: 'normal !important'
37
39
  }
38
40
  }, props, {
41
+ ref: forwardRef,
39
42
  children: props.children
40
43
  }));
41
- }
44
+ });
45
+
46
+ exports.ScreenReaderText = ScreenReaderText;
47
+ ScreenReaderText.displayName = 'ScreenReaderText';
42
48
  /**
43
49
  * propTypes
44
50
  */
45
51
 
46
-
47
52
  ScreenReaderText.propTypes = {
48
53
  children: _propTypes["default"].node.isRequired
49
54
  };
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ exports["default"] = void 0;
4
5
 
5
6
  var _ScreenReaderText = require("./ScreenReaderText");
6
7
 
7
- exports.ScreenReaderText = _ScreenReaderText.ScreenReaderText;
8
+ exports.ScreenReaderText = _ScreenReaderText.ScreenReaderText;
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ var _default = _ScreenReaderText.ScreenReaderText;
14
+ exports["default"] = _default;
@@ -3,6 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  exports.__esModule = true;
6
+ exports.NewDialog = void 0;
6
7
 
7
8
  var _Avatar = require("./Avatar");
8
9
 
@@ -42,9 +43,9 @@ exports.DialogMenuItem = _Dialog.DialogMenuItem;
42
43
  exports.DialogTrigger = _Dialog.DialogTrigger;
43
44
  exports.DialogContent = _Dialog.DialogContent;
44
45
 
45
- var _NewDialog = require("./NewDialog");
46
+ var NewDialog = _interopRequireWildcard(require("./NewDialog"));
46
47
 
47
- exports.NewDialog = _NewDialog.NewDialog;
48
+ exports.NewDialog = NewDialog;
48
49
 
49
50
  var _ConfirmationDialog = require("./ConfirmationDialog");
50
51
 
@@ -140,4 +141,8 @@ var _Wizard = require("./Wizard");
140
141
 
141
142
  exports.Wizard = _Wizard.Wizard;
142
143
  exports.WizardStep = _Wizard.WizardStep;
143
- exports.WizardStepHorizontal = _Wizard.WizardStepHorizontal;
144
+ exports.WizardStepHorizontal = _Wizard.WizardStepHorizontal;
145
+
146
+ 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); }
147
+
148
+ 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; }