@pingux/astro 2.44.1-alpha.0 → 2.45.0-alpha.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.
@@ -20,50 +20,50 @@ declare const useRockerButton: (props: RockerButtonProps, state: {
20
20
  style?: React.CSSProperties | undefined;
21
21
  className?: string | undefined;
22
22
  'aria-activedescendant'?: string | undefined;
23
- 'aria-atomic'?: (boolean | "true" | "false") | undefined;
24
- 'aria-autocomplete'?: "list" | "none" | "inline" | "both" | undefined;
23
+ 'aria-atomic'?: (boolean | "false" | "true") | undefined;
24
+ 'aria-autocomplete'?: "list" | "none" | "both" | "inline" | undefined;
25
25
  'aria-braillelabel'?: string | undefined;
26
26
  'aria-brailleroledescription'?: string | undefined;
27
- 'aria-busy'?: (boolean | "true" | "false") | undefined;
28
- 'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
27
+ 'aria-busy'?: (boolean | "false" | "true") | undefined;
28
+ 'aria-checked'?: boolean | "mixed" | "false" | "true" | undefined;
29
29
  'aria-colcount'?: number | undefined;
30
30
  'aria-colindex'?: number | undefined;
31
31
  'aria-colindextext'?: string | undefined;
32
32
  'aria-colspan'?: number | undefined;
33
33
  'aria-controls'?: string | undefined;
34
- 'aria-current'?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
34
+ 'aria-current'?: boolean | "time" | "page" | "false" | "true" | "step" | "location" | "date" | undefined;
35
35
  'aria-describedby'?: string | undefined;
36
36
  'aria-description'?: string | undefined;
37
37
  'aria-details'?: string | undefined;
38
- 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
38
+ 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
39
39
  'aria-errormessage'?: string | undefined;
40
- 'aria-expanded'?: (boolean | "true" | "false") | undefined;
40
+ 'aria-expanded'?: (boolean | "false" | "true") | undefined;
41
41
  'aria-flowto'?: string | undefined;
42
- 'aria-grabbed'?: (boolean | "true" | "false") | undefined;
43
- 'aria-haspopup'?: boolean | "dialog" | "menu" | "grid" | "true" | "false" | "listbox" | "tree" | undefined;
44
- 'aria-hidden'?: (boolean | "true" | "false") | undefined;
45
- 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
42
+ 'aria-grabbed'?: (boolean | "false" | "true") | undefined;
43
+ 'aria-haspopup'?: boolean | "dialog" | "grid" | "listbox" | "menu" | "tree" | "false" | "true" | undefined;
44
+ 'aria-hidden'?: (boolean | "false" | "true") | undefined;
45
+ 'aria-invalid'?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
46
46
  'aria-keyshortcuts'?: string | undefined;
47
47
  'aria-label'?: string | undefined;
48
48
  'aria-labelledby'?: string | undefined;
49
49
  'aria-level'?: number | undefined;
50
50
  'aria-live'?: "off" | "assertive" | "polite" | undefined;
51
- 'aria-modal'?: (boolean | "true" | "false") | undefined;
52
- 'aria-multiline'?: (boolean | "true" | "false") | undefined;
53
- 'aria-multiselectable'?: (boolean | "true" | "false") | undefined;
54
- 'aria-orientation'?: "horizontal" | "vertical" | undefined;
51
+ 'aria-modal'?: (boolean | "false" | "true") | undefined;
52
+ 'aria-multiline'?: (boolean | "false" | "true") | undefined;
53
+ 'aria-multiselectable'?: (boolean | "false" | "true") | undefined;
54
+ 'aria-orientation'?: "vertical" | "horizontal" | undefined;
55
55
  'aria-owns'?: string | undefined;
56
56
  'aria-placeholder'?: string | undefined;
57
57
  'aria-posinset'?: number | undefined;
58
- 'aria-readonly'?: (boolean | "true" | "false") | undefined;
59
- 'aria-relevant'?: "text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
60
- 'aria-required'?: (boolean | "true" | "false") | undefined;
58
+ 'aria-readonly'?: (boolean | "false" | "true") | undefined;
59
+ 'aria-relevant'?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
60
+ 'aria-required'?: (boolean | "false" | "true") | undefined;
61
61
  'aria-roledescription'?: string | undefined;
62
62
  'aria-rowcount'?: number | undefined;
63
63
  'aria-rowindex'?: number | undefined;
64
64
  'aria-rowindextext'?: string | undefined;
65
65
  'aria-rowspan'?: number | undefined;
66
- 'aria-selected'?: (boolean | "true" | "false") | undefined;
66
+ 'aria-selected'?: (boolean | "false" | "true") | undefined;
67
67
  'aria-setsize'?: number | undefined;
68
68
  'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
69
69
  'aria-valuemax'?: number | undefined;
@@ -1,4 +1,4 @@
1
- import { ElementType } from 'react';
1
+ import { ElementType, Key } from 'react';
2
2
  import type { ItemProps } from '@react-types/shared';
3
3
  import { DOMAttributes, StyleProps } from './shared';
4
4
  export interface Status {
@@ -7,11 +7,13 @@ export interface Status {
7
7
  declare module '@react-types/shared' {
8
8
  interface ItemProps<T> extends StyleProps, DOMAttributes {
9
9
  /** The rendered label for the item. */
10
- label?: string;
10
+ label?: string | React.ReactNode;
11
11
  /** Props for the accordion item content element. */
12
12
  regionProps?: StyleProps;
13
13
  /** Props for the accordion item content element. */
14
14
  containerProps?: StyleProps;
15
+ /** Props for the accordion item button element. */
16
+ buttonProps?: StyleProps;
15
17
  /** Whether the item has a separator */
16
18
  isSeparator?: boolean;
17
19
  /** Whether the item is pressed */
@@ -24,6 +26,8 @@ declare module '@react-types/shared' {
24
26
  href?: string;
25
27
  /** Inline styling prop for item */
26
28
  sx?: StyleProps;
29
+ /** Key for the item. */
30
+ key?: Key;
27
31
  }
28
32
  }
29
33
  export default ItemProps;
@@ -9,20 +9,21 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
10
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
- var _excluded = ["defaultExpandedKeys", "expandedKeys", "labelHeadingTag", "onExpandedChange"],
12
+ var _excluded = ["labelHeadingTag", "onExpandedChange"],
13
13
  _excluded2 = ["onFocus"];
14
14
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
15
15
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
16
16
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
18
18
  import React, { forwardRef, useImperativeHandle, useRef } from 'react';
19
+ import { mergeProps } from 'react-aria';
19
20
  import { useTreeState } from 'react-stately';
20
21
  import { useAccordion } from '@react-aria/accordion';
21
- import { mergeProps } from '@react-aria/utils';
22
- import PropTypes from 'prop-types';
22
+
23
+ // eslint-disable-next-line import/no-unresolved
24
+
23
25
  import { AccordionContext } from '../../context/AccordionContext';
24
26
  import { Box } from '../../index';
25
- import { isIterableProp } from '../../utils/devUtils/props/isIterable';
26
27
  import AccordionItem from '../AccordionItem';
27
28
 
28
29
  /**
@@ -33,18 +34,15 @@ import AccordionItem from '../AccordionItem';
33
34
  import { jsx as ___EmotionJSX } from "@emotion/react";
34
35
  var AccordionGroup = /*#__PURE__*/forwardRef(function (props, ref) {
35
36
  var _context;
36
- var defaultExpandedKeys = props.defaultExpandedKeys,
37
- expandedKeys = props.expandedKeys,
38
- labelHeadingTag = props.labelHeadingTag,
37
+ var _props$labelHeadingTa = props.labelHeadingTag,
38
+ labelHeadingTag = _props$labelHeadingTa === void 0 ? 'span' : _props$labelHeadingTa,
39
39
  onExpandedChange = props.onExpandedChange,
40
40
  others = _objectWithoutProperties(props, _excluded);
41
41
  var state = useTreeState(props);
42
- var accordionRef = useRef();
42
+ var accordionRef = useRef(null);
43
43
 
44
44
  /* `autoFocus: true` is what makes the initial focus only take one click vs two. */
45
- var _useAccordion = useAccordion(_objectSpread({
46
- autoFocus: true
47
- }, props), state, accordionRef),
45
+ var _useAccordion = useAccordion(_objectSpread({}, props), state, accordionRef),
48
46
  accordionProps = _useAccordion.accordionProps;
49
47
  delete accordionProps.onMouseDown;
50
48
 
@@ -56,11 +54,19 @@ var AccordionGroup = /*#__PURE__*/forwardRef(function (props, ref) {
56
54
  useImperativeHandle(ref, function () {
57
55
  return accordionRef.current;
58
56
  });
57
+ var mergedProps = mergeProps(theseProps, others);
58
+ var onFocusGroup = function onFocusGroup() {
59
+ if (state.selectionManager.isFocused === false) {
60
+ state.selectionManager.setFocused(true);
61
+ }
62
+ };
59
63
  return ___EmotionJSX(AccordionContext.Provider, {
60
64
  value: state
61
65
  }, ___EmotionJSX(Box, _extends({
62
66
  ref: accordionRef
63
- }, mergeProps(theseProps, others)), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
67
+ }, mergedProps, {
68
+ onFocus: onFocusGroup
69
+ }), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
64
70
  return ___EmotionJSX(AccordionItem, {
65
71
  "data-id": item['data-id'],
66
72
  item: item,
@@ -69,24 +75,5 @@ var AccordionGroup = /*#__PURE__*/forwardRef(function (props, ref) {
69
75
  }, item.props.children);
70
76
  })));
71
77
  });
72
- AccordionGroup.propTypes = {
73
- /** Handler that is called when items are expanded or collapsed. */
74
- onExpandedChange: PropTypes.func,
75
- /** Item objects in the collection. */
76
- items: isIterableProp,
77
- /**
78
- * The item keys that are disabled. These items cannot be selected, focused, or otherwise
79
- * interacted with.
80
- */
81
- disabledKeys: isIterableProp,
82
- /** The currently expanded keys in the collection (controlled). */
83
- expandedKeys: isIterableProp,
84
- /** The initial expanded keys in the collection (uncontrolled). */
85
- defaultExpandedKeys: isIterableProp,
86
- /** Id of the selected element */
87
- id: PropTypes.string,
88
- /** HTML header element wrapping the label */
89
- labelHeadingTag: AccordionItem.propTypes.labelHeadingTag
90
- };
91
78
  AccordionGroup.displayName = 'AccordionGroup';
92
79
  export default AccordionGroup;
@@ -5,9 +5,9 @@ import { Item } from 'react-stately';
5
5
  import { withDesign } from 'storybook-addon-designs';
6
6
  import DocsLayout from '../../../.storybook/storybookDocsLayout';
7
7
  import { AccordionGroup, Badge, Box, Button, Text, TextField } from '../../index';
8
- import { FIGMA_LINKS } from '../../utils/designUtils/figmaLinks.ts';
8
+ import { FIGMA_LINKS } from '../../utils/designUtils/figmaLinks';
9
9
  import { validHeadingTags } from '../AccordionItem/AccordionItem';
10
- import AccordionReadme from './AccordionGroup.mdx';
10
+ import AccordionReadme from './AccordionGroup';
11
11
  import { jsx as ___EmotionJSX } from "@emotion/react";
12
12
  var itemArray = [{
13
13
  key: 't1',
@@ -138,9 +138,10 @@ export var Multiple = function Multiple() {
138
138
  items: itemArray,
139
139
  labelHeadingTag: "h3"
140
140
  }, function (item) {
141
+ var _label;
141
142
  return ___EmotionJSX(Item, {
142
143
  key: item.key,
143
- textValue: item.label,
144
+ textValue: (_label = item.label) === null || _label === void 0 ? void 0 : _label.toString(),
144
145
  label: item.label
145
146
  }, item.children);
146
147
  })
@@ -175,9 +176,10 @@ export var ControlledExpanded = function ControlledExpanded() {
175
176
  items: itemArray,
176
177
  labelHeadingTag: "h3"
177
178
  }, function (item) {
179
+ var _label2;
178
180
  return ___EmotionJSX(Item, {
179
181
  key: item.key,
180
- textValue: item.label,
182
+ textValue: (_label2 = item.label) === null || _label2 === void 0 ? void 0 : _label2.toString(),
181
183
  label: item.label
182
184
  }, item.children);
183
185
  })
@@ -197,9 +199,10 @@ export var UncontrolledExpanded = function UncontrolledExpanded() {
197
199
  items: itemArray,
198
200
  labelHeadingTag: "h3"
199
201
  }, function (item) {
202
+ var _label3;
200
203
  return ___EmotionJSX(Item, {
201
204
  key: item.key,
202
- textValue: item.label,
205
+ textValue: (_label3 = item.label) === null || _label3 === void 0 ? void 0 : _label3.toString(),
203
206
  label: item.label
204
207
  }, item.children);
205
208
  })
@@ -219,9 +222,10 @@ export var DisabledState = function DisabledState() {
219
222
  items: itemArrayDisabled,
220
223
  labelHeadingTag: "h3"
221
224
  }, function (item) {
225
+ var _label4;
222
226
  return ___EmotionJSX(Item, {
223
227
  key: item.key,
224
- textValue: item.label,
228
+ textValue: (_label4 = item.label) === null || _label4 === void 0 ? void 0 : _label4.toString(),
225
229
  label: item.label
226
230
  }, item.children);
227
231
  })
@@ -246,9 +250,10 @@ export var CustomPresentation = function CustomPresentation() {
246
250
  items: itemArrayDisabled,
247
251
  labelHeadingTag: "h3"
248
252
  }, function (item) {
253
+ var _label5;
249
254
  return ___EmotionJSX(Item, {
250
255
  key: item.key,
251
- textValue: item.label,
256
+ textValue: (_label5 = item.label) === null || _label5 === void 0 ? void 0 : _label5.toString(),
252
257
  label: item.label,
253
258
  buttonProps: {
254
259
  bg: item.key === 't2' ? 'darkseagreen' : 'skyblue'
@@ -98,7 +98,9 @@ var getComponentWithPopover = function getComponentWithPopover() {
98
98
  }, ___EmotionJSX(PopoverMenu, null, ___EmotionJSX(Button, {
99
99
  "data-testid": "popoverbutton"
100
100
  }, "Click me"), ___EmotionJSX(Menu, {
101
- onAction: function onAction() {}
101
+ onAction: function onAction() {
102
+ return false;
103
+ }
102
104
  }, ___EmotionJSX(Item, {
103
105
  key: "edit"
104
106
  }, "Edit"), ___EmotionJSX(Item, {
@@ -111,13 +113,15 @@ var getComponentWithPopover = function getComponentWithPopover() {
111
113
  }, "Delete")))), ___EmotionJSX(AccordionGroup, {
112
114
  items: items,
113
115
  defaultExpandedKeys: selectedAccordionKeys
114
- }, function (item) {
115
- return ___EmotionJSX(Item, {
116
- key: item.key,
117
- textValue: item.label,
118
- label: item.label
119
- }, item.text);
120
- })));
116
+ }, ___EmotionJSX(Item, {
117
+ key: items[0].key,
118
+ textValue: items[0].label,
119
+ label: items[0].label
120
+ }, items[0].text), ___EmotionJSX(Item, {
121
+ key: items[1].key,
122
+ textValue: items[1].label,
123
+ label: items[1].label
124
+ }, items[1].text))));
121
125
  };
122
126
  var getComponentWithMultipleAccordion = function getComponentWithMultipleAccordion() {
123
127
  return render(___EmotionJSX(Box, {
@@ -242,9 +246,7 @@ test('allows users to navigate accordion headers through the tab key', function
242
246
  firstItem = _buttons2[0],
243
247
  secondItem = _buttons2[1],
244
248
  thirdItem = _buttons2[2];
245
- act(function () {
246
- firstItem.focus();
247
- });
249
+ userEvent.tab();
248
250
  expect(firstItem).toHaveFocus();
249
251
  userEvent.tab();
250
252
  expect(secondItem).toHaveFocus();
@@ -1,18 +1,17 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
3
- var _context;
4
- var _excluded = ["label", "children", "textValue", "containerProps", "buttonProps", "regionProps"];
3
+ var _excluded = ["containerProps", "buttonProps", "regionProps"];
5
4
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
6
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
7
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
8
- import React, { forwardRef, useContext, useImperativeHandle, useRef } from 'react';
5
+ import React, { useContext, useRef } from 'react';
9
6
  import { mergeProps, useButton } from 'react-aria';
10
7
  import MenuDown from '@pingux/mdi-react/MenuDownIcon';
11
8
  import MenuUp from '@pingux/mdi-react/MenuUpIcon';
12
9
  import { useAccordionItem } from '@react-aria/accordion';
13
10
  import { useFocusRing } from '@react-aria/focus';
14
11
  import { useHover } from '@react-aria/interactions';
15
- import PropTypes from 'prop-types';
12
+
13
+ // eslint-disable-next-line import/no-unresolved
14
+
16
15
  import { Button as ThemeUIButton } from 'theme-ui';
17
16
  import { AccordionContext } from '../../context/AccordionContext';
18
17
  import { useStatusClasses } from '../../hooks';
@@ -20,14 +19,11 @@ import { Box, Icon, Text } from '../../index';
20
19
  import { hoveredState } from '../AccordionGroup/Accordion.styles';
21
20
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
21
  export var validHeadingTags = ['h1', 'h2', 'h3', 'h4'];
23
- var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
22
+ var AccordionItem = function AccordionItem(props) {
24
23
  var className = props.className,
25
24
  item = props.item,
26
25
  labelHeadingTag = props.labelHeadingTag;
27
26
  var _item$props = item.props,
28
- label = _item$props.label,
29
- children = _item$props.children,
30
- textValue = _item$props.textValue,
31
27
  _item$props$container = _item$props.containerProps,
32
28
  containerProps = _item$props$container === void 0 ? {} : _item$props$container,
33
29
  _item$props$buttonPro = _item$props.buttonProps,
@@ -36,23 +32,23 @@ var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
36
32
  regionProps = _item$props$regionPro === void 0 ? {} : _item$props$regionPro,
37
33
  others = _objectWithoutProperties(_item$props, _excluded);
38
34
  var state = useContext(AccordionContext);
39
- var buttonRef = useRef();
35
+ var buttonRef = useRef(null);
40
36
  var _useAccordionItem = useAccordionItem(props, state, buttonRef),
41
37
  accordionButtonProps = _useAccordionItem.buttonProps,
42
38
  accordionRegionProps = _useAccordionItem.regionProps;
43
- var _useHover = useHover(props),
44
- hoverProps = _useHover.hoverProps,
45
- isHovered = _useHover.isHovered;
46
39
  var _useFocusRing = useFocusRing(),
47
40
  focusProps = _useFocusRing.focusProps,
48
41
  isFocusVisible = _useFocusRing.isFocusVisible;
49
42
  var isOpen = state.expandedKeys.has(item.key);
50
43
  var isDisabled = state.disabledKeys.has(item.key);
44
+ var _useHover = useHover({
45
+ isDisabled: isDisabled
46
+ }),
47
+ hoverProps = _useHover.hoverProps,
48
+ isHovered = _useHover.isHovered;
51
49
 
52
50
  /* istanbul ignore next */
53
- useImperativeHandle(ref, function () {
54
- return buttonRef.current;
55
- });
51
+
56
52
  var _useButton = useButton(props, buttonRef),
57
53
  isPressed = _useButton.isPressed,
58
54
  raButtonProps = _useButton.buttonProps;
@@ -102,24 +98,6 @@ var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
102
98
  }, accordionRegionProps, regionProps, {
103
99
  className: itemClasses
104
100
  }), item.rendered));
105
- });
106
- AccordionItem.propTypes = {
107
- 'aria-label': PropTypes.string,
108
- labelHeadingTag: PropTypes.oneOf(_concatInstanceProperty(_context = []).call(_context, validHeadingTags, _mapInstanceProperty(validHeadingTags).call(validHeadingTags, function (heading) {
109
- return heading.toUpperCase();
110
- }))),
111
- item: PropTypes.shape({
112
- key: PropTypes.string,
113
- rendered: PropTypes.node,
114
- props: PropTypes.shape({
115
- label: PropTypes.node,
116
- children: PropTypes.node,
117
- textValue: PropTypes.string,
118
- containerProps: PropTypes.shape({}),
119
- buttonProps: PropTypes.shape({}),
120
- regionProps: PropTypes.shape({})
121
- })
122
- })
123
101
  };
124
102
  AccordionItem.displayName = 'AccordionItem';
125
103
  export default AccordionItem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.44.1-alpha.0",
3
+ "version": "2.45.0-alpha.0",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",
@@ -80,7 +80,8 @@
80
80
  "@react-stately/table": "^3.9.0",
81
81
  "@react-stately/tree": "^3.7.4",
82
82
  "@react-stately/virtualizer": "~3.6.5",
83
- "@react-types/shared": "^3.20.0",
83
+ "@react-types/accordion": "^3.0.0-alpha.18",
84
+ "@react-types/shared": "^3.22.0",
84
85
  "@storybook/addon-actions": "^7.1.0",
85
86
  "@storybook/api": "^7.1.0",
86
87
  "@storybook/components": "^7.1.0",