@deque/cauldron-react 2.0.0 → 3.0.1-canary.0298c7b0

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 (45) hide show
  1. package/lib/arrow-36f5cb02.js +25 -0
  2. package/lib/{arrow-circle-7b95a2fd.js → arrow-circle-858d89b5.js} +5 -7
  3. package/lib/cauldron.css +45 -7
  4. package/lib/chevron-cbfd92ec.js +25 -0
  5. package/lib/{chevron-double-65975fca.js → chevron-double-42e4b50e.js} +5 -6
  6. package/lib/{close-1b16b9ec.js → close-31ce4dcf.js} +2 -2
  7. package/lib/components/Address/index.d.ts +38 -0
  8. package/lib/components/Card/Card.d.ts +3 -1
  9. package/lib/components/ExpandCollapsePanel/PanelTrigger.d.ts +2 -1
  10. package/lib/components/Icon/index.d.ts +3 -1
  11. package/lib/components/Icon/types.d.ts +7 -0
  12. package/lib/components/IconButton/index.d.ts +12 -4
  13. package/lib/components/Loader/index.d.ts +2 -3
  14. package/lib/components/NavBar/NavBar.d.ts +22 -0
  15. package/lib/components/NavBar/NavItem.d.ts +14 -0
  16. package/lib/components/NavBar/index.d.ts +2 -0
  17. package/lib/components/OptionsMenu/OptionsMenu.d.ts +4 -4
  18. package/lib/components/Panel/index.d.ts +17 -0
  19. package/lib/components/ProgressBar/index.d.ts +15 -0
  20. package/lib/components/Select/index.d.ts +2 -2
  21. package/lib/components/SideBar/SideBar.d.ts +1 -0
  22. package/lib/components/Stepper/index.d.ts +2 -0
  23. package/lib/components/Table/TableCell.d.ts +2 -2
  24. package/lib/components/Table/TableHeader.d.ts +2 -2
  25. package/lib/components/Tabs/Tab.d.ts +8 -0
  26. package/lib/components/Tabs/TabPanel.d.ts +8 -0
  27. package/lib/components/Tabs/Tabs.d.ts +26 -0
  28. package/lib/components/Tabs/index.d.ts +3 -0
  29. package/lib/components/TextField/index.d.ts +0 -1
  30. package/lib/components/Toast/utils.d.ts +9 -22
  31. package/lib/components/Tooltip/index.d.ts +1 -1
  32. package/lib/{chevron-064d5f96.js → copy-d2ade017.js} +5 -5
  33. package/lib/index.d.ts +7 -1
  34. package/lib/index.js +436 -73
  35. package/lib/{arrow-97011665.js → info-square-f193e281.js} +5 -7
  36. package/lib/magnifying-glass-2907fb77.js +23 -0
  37. package/lib/{triangle-51d7723a.js → menu-2f2be7c2.js} +5 -6
  38. package/lib/recycle-0198fb67.js +25 -0
  39. package/lib/robot-22863b2b.js +29 -0
  40. package/lib/triangle-42e0eece.js +25 -0
  41. package/lib/types.d.ts +7 -0
  42. package/lib/utils/polymorphic-type/index.d.ts +40 -0
  43. package/lib/utils/use-did-update/index.d.ts +10 -0
  44. package/package.json +3 -2
  45. package/lib/menu-2bb052ac.js +0 -43
package/lib/index.js CHANGED
@@ -10,10 +10,10 @@ var React__default = _interopDefault(React);
10
10
  var PropTypes = _interopDefault(require('prop-types'));
11
11
  var classNames = _interopDefault(require('classnames'));
12
12
  var keyname = _interopDefault(require('keyname'));
13
- var reactDom = require('react-dom');
14
- var FocusTrap = _interopDefault(require('focus-trap-react'));
15
13
  var nextId = require('react-id-generator');
16
14
  var nextId__default = _interopDefault(nextId);
15
+ var reactDom = require('react-dom');
16
+ var FocusTrap = _interopDefault(require('focus-trap-react'));
17
17
  var reactPopper = require('react-popper');
18
18
  var focusable = _interopDefault(require('focusable'));
19
19
 
@@ -112,11 +112,89 @@ var Workspace = /** @class */ (function (_super) {
112
112
 
113
113
  var Offscreen = function (props) { return (React__default.createElement("div", tslib.__assign({ className: "Offscreen" }, props))); };
114
114
 
115
+ /*!
116
+ * GENERATED CODE. DO NOT EDIT DIRECTLY!
117
+ */
118
+ /** iconTypes holds each valid icon type. */
119
+ var iconTypes = [
120
+ 'add-user',
121
+ 'arrow-circle-up',
122
+ 'arrow-circle-down',
123
+ 'arrow-circle-left',
124
+ 'arrow-circle-right',
125
+ 'arrow-up',
126
+ 'arrow-down',
127
+ 'arrow-left',
128
+ 'arrow-right',
129
+ 'arrows-alt',
130
+ 'bolt',
131
+ 'caution',
132
+ 'check-circle',
133
+ 'check-shield',
134
+ 'check-solid',
135
+ 'check',
136
+ 'checkbox-checked',
137
+ 'checkbox-unchecked',
138
+ 'chevron-double-up',
139
+ 'chevron-double-down',
140
+ 'chevron-double-left',
141
+ 'chevron-double-right',
142
+ 'chevron-up',
143
+ 'chevron-down',
144
+ 'chevron-left',
145
+ 'chevron-right',
146
+ 'close',
147
+ 'code',
148
+ 'copy',
149
+ 'download',
150
+ 'exchange',
151
+ 'external-link',
152
+ 'eye',
153
+ 'filter',
154
+ 'flag',
155
+ 'gears',
156
+ 'grid',
157
+ 'hamburger-menu',
158
+ 'highlight',
159
+ 'info-circle-alt',
160
+ 'info-circle',
161
+ 'info-square',
162
+ 'kabob',
163
+ 'list',
164
+ 'lock',
165
+ 'magnifying-glass',
166
+ 'menu',
167
+ 'new-releases',
168
+ 'new',
169
+ 'no',
170
+ 'pencil',
171
+ 'plus',
172
+ 'question-circle',
173
+ 'radio-checked',
174
+ 'radio-unchecked',
175
+ 'recycle',
176
+ 'robot',
177
+ 'run-again',
178
+ 'save',
179
+ 'share',
180
+ 'sort',
181
+ 'star',
182
+ 'sun',
183
+ 'tag',
184
+ 'target',
185
+ 'trash',
186
+ 'triangle-up',
187
+ 'triangle-down',
188
+ 'triangle-left',
189
+ 'triangle-right',
190
+ 'upload'
191
+ ];
192
+
115
193
  function __variableDynamicImportRuntime0__(path) {
116
194
  switch (path) {
117
195
  case './icons/add-user.svg': return Promise.resolve().then(function () { return require('./add-user-075c63a1.js'); });
118
- case './icons/arrow-circle.svg': return Promise.resolve().then(function () { return require('./arrow-circle-7b95a2fd.js'); });
119
- case './icons/arrow.svg': return Promise.resolve().then(function () { return require('./arrow-97011665.js'); });
196
+ case './icons/arrow-circle.svg': return Promise.resolve().then(function () { return require('./arrow-circle-858d89b5.js'); });
197
+ case './icons/arrow.svg': return Promise.resolve().then(function () { return require('./arrow-36f5cb02.js'); });
120
198
  case './icons/arrows-alt.svg': return Promise.resolve().then(function () { return require('./arrows-alt-b91e24b7.js'); });
121
199
  case './icons/bolt.svg': return Promise.resolve().then(function () { return require('./bolt-e44406fd.js'); });
122
200
  case './icons/caution.svg': return Promise.resolve().then(function () { return require('./caution-e048e1bf.js'); });
@@ -126,10 +204,11 @@ function __variableDynamicImportRuntime0__(path) {
126
204
  case './icons/check.svg': return Promise.resolve().then(function () { return require('./check-c2912d5e.js'); });
127
205
  case './icons/checkbox-checked.svg': return Promise.resolve().then(function () { return require('./checkbox-checked-a262e99c.js'); });
128
206
  case './icons/checkbox-unchecked.svg': return Promise.resolve().then(function () { return require('./checkbox-unchecked-2ad5b4ae.js'); });
129
- case './icons/chevron-double.svg': return Promise.resolve().then(function () { return require('./chevron-double-65975fca.js'); });
130
- case './icons/chevron.svg': return Promise.resolve().then(function () { return require('./chevron-064d5f96.js'); });
131
- case './icons/close.svg': return Promise.resolve().then(function () { return require('./close-1b16b9ec.js'); });
207
+ case './icons/chevron-double.svg': return Promise.resolve().then(function () { return require('./chevron-double-42e4b50e.js'); });
208
+ case './icons/chevron.svg': return Promise.resolve().then(function () { return require('./chevron-cbfd92ec.js'); });
209
+ case './icons/close.svg': return Promise.resolve().then(function () { return require('./close-31ce4dcf.js'); });
132
210
  case './icons/code.svg': return Promise.resolve().then(function () { return require('./code-e3365341.js'); });
211
+ case './icons/copy.svg': return Promise.resolve().then(function () { return require('./copy-d2ade017.js'); });
133
212
  case './icons/download.svg': return Promise.resolve().then(function () { return require('./download-2790e982.js'); });
134
213
  case './icons/exchange.svg': return Promise.resolve().then(function () { return require('./exchange-1d290efb.js'); });
135
214
  case './icons/external-link.svg': return Promise.resolve().then(function () { return require('./external-link-ef122c95.js'); });
@@ -142,10 +221,12 @@ function __variableDynamicImportRuntime0__(path) {
142
221
  case './icons/highlight.svg': return Promise.resolve().then(function () { return require('./highlight-81bfb759.js'); });
143
222
  case './icons/info-circle-alt.svg': return Promise.resolve().then(function () { return require('./info-circle-alt-b1a696c7.js'); });
144
223
  case './icons/info-circle.svg': return Promise.resolve().then(function () { return require('./info-circle-b43f7a9b.js'); });
224
+ case './icons/info-square.svg': return Promise.resolve().then(function () { return require('./info-square-f193e281.js'); });
145
225
  case './icons/kabob.svg': return Promise.resolve().then(function () { return require('./kabob-692fdc00.js'); });
146
226
  case './icons/list.svg': return Promise.resolve().then(function () { return require('./list-8fbd8209.js'); });
147
227
  case './icons/lock.svg': return Promise.resolve().then(function () { return require('./lock-bd0122db.js'); });
148
- case './icons/menu.svg': return Promise.resolve().then(function () { return require('./menu-2bb052ac.js'); });
228
+ case './icons/magnifying-glass.svg': return Promise.resolve().then(function () { return require('./magnifying-glass-2907fb77.js'); });
229
+ case './icons/menu.svg': return Promise.resolve().then(function () { return require('./menu-2f2be7c2.js'); });
149
230
  case './icons/new-releases.svg': return Promise.resolve().then(function () { return require('./new-releases-ac749bdd.js'); });
150
231
  case './icons/new.svg': return Promise.resolve().then(function () { return require('./new-6c3ac7d7.js'); });
151
232
  case './icons/no.svg': return Promise.resolve().then(function () { return require('./no-bb3aa565.js'); });
@@ -154,6 +235,8 @@ function __variableDynamicImportRuntime0__(path) {
154
235
  case './icons/question-circle.svg': return Promise.resolve().then(function () { return require('./question-circle-c3c634c4.js'); });
155
236
  case './icons/radio-checked.svg': return Promise.resolve().then(function () { return require('./radio-checked-006112fe.js'); });
156
237
  case './icons/radio-unchecked.svg': return Promise.resolve().then(function () { return require('./radio-unchecked-a76e2d66.js'); });
238
+ case './icons/recycle.svg': return Promise.resolve().then(function () { return require('./recycle-0198fb67.js'); });
239
+ case './icons/robot.svg': return Promise.resolve().then(function () { return require('./robot-22863b2b.js'); });
157
240
  case './icons/run-again.svg': return Promise.resolve().then(function () { return require('./run-again-c9777075.js'); });
158
241
  case './icons/save.svg': return Promise.resolve().then(function () { return require('./save-edf5fc68.js'); });
159
242
  case './icons/share.svg': return Promise.resolve().then(function () { return require('./share-70e94257.js'); });
@@ -163,7 +246,7 @@ function __variableDynamicImportRuntime0__(path) {
163
246
  case './icons/tag.svg': return Promise.resolve().then(function () { return require('./tag-56c32f4f.js'); });
164
247
  case './icons/target.svg': return Promise.resolve().then(function () { return require('./target-50f179e0.js'); });
165
248
  case './icons/trash.svg': return Promise.resolve().then(function () { return require('./trash-896a3291.js'); });
166
- case './icons/triangle.svg': return Promise.resolve().then(function () { return require('./triangle-51d7723a.js'); });
249
+ case './icons/triangle.svg': return Promise.resolve().then(function () { return require('./triangle-42e0eece.js'); });
167
250
  case './icons/upload.svg': return Promise.resolve().then(function () { return require('./upload-d71f0e44.js'); });
168
251
  default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));
169
252
  }
@@ -205,6 +288,7 @@ var Icon = React.forwardRef(function (_a, ref) {
205
288
  Icon.propTypes = {
206
289
  label: PropTypes.string,
207
290
  className: PropTypes.string,
291
+ // @ts-expect-error
208
292
  type: PropTypes.string.isRequired
209
293
  };
210
294
  Icon.displayName = 'Icon';
@@ -907,6 +991,69 @@ var TopBarMenu = /** @class */ (function (_super) {
907
991
  return TopBarMenu;
908
992
  }(React__default.Component));
909
993
 
994
+ var NavBar = function (_a) {
995
+ var children = _a.children, className = _a.className, _b = _a.collapsed, collapsed = _b === void 0 ? false : _b, _c = _a.navTriggerLabel, navTriggerLabel = _c === void 0 ? 'MAIN MENU' : _c, propId = _a.propId;
996
+ var navRef = React.useRef(null);
997
+ var triggerRef = React.useRef(null);
998
+ var _d = React.useState(false), showDropdown = _d[0], setShowDropdown = _d[1];
999
+ var menuId = ([propId] || nextId.useId(1, 'navbar'))[0];
1000
+ var showNavItems = !collapsed || (collapsed && showDropdown);
1001
+ var handleOutSideEvent = function (e) {
1002
+ var _a;
1003
+ var target = e.target;
1004
+ if (navRef.current && !((_a = navRef.current) === null || _a === void 0 ? void 0 : _a.contains(target))) {
1005
+ setShowDropdown(false);
1006
+ }
1007
+ };
1008
+ var handleKeyDown = function (e) {
1009
+ var _a;
1010
+ if (e.key !== 'Escape') {
1011
+ return;
1012
+ }
1013
+ setShowDropdown(false);
1014
+ (_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
1015
+ };
1016
+ React.useEffect(function () {
1017
+ if (collapsed && showDropdown) {
1018
+ document.addEventListener('focusin', handleOutSideEvent);
1019
+ return function () {
1020
+ document.removeEventListener('focusin', handleOutSideEvent);
1021
+ };
1022
+ }
1023
+ }, [collapsed, showDropdown]);
1024
+ var handleTriggerClick = function () {
1025
+ setShowDropdown(!showDropdown);
1026
+ };
1027
+ return (React__default.createElement("nav", { className: classNames('NavBar', className, {
1028
+ 'NavBar--collapsed': collapsed
1029
+ }), ref: navRef },
1030
+ collapsed && (React__default.createElement("button", { "aria-haspopup": "true", "aria-expanded": showDropdown, "aria-controls": menuId, ref: triggerRef, onClick: handleTriggerClick, className: classNames('NavBar__trigger', {
1031
+ 'NavBar__trigger--active': showDropdown
1032
+ }) },
1033
+ React__default.createElement(Icon, { type: showDropdown ? 'close' : 'hamburger-menu' }),
1034
+ navTriggerLabel)),
1035
+ showNavItems && (React__default.createElement("ul", { onKeyDown: handleKeyDown, id: menuId }, children))));
1036
+ };
1037
+ NavBar.displayName = 'NavBar';
1038
+ NavBar.propTypes = {
1039
+ children: PropTypes.node.isRequired,
1040
+ className: PropTypes.string,
1041
+ collapsed: PropTypes.bool,
1042
+ navTriggerLabel: PropTypes.string,
1043
+ propId: PropTypes.string
1044
+ };
1045
+
1046
+ var NavItem = function (_a) {
1047
+ var children = _a.children, active = _a.active, other = tslib.__rest(_a, ["children", "active"]);
1048
+ return (React__default.createElement("li", tslib.__assign({ className: classNames('NavItem', {
1049
+ 'NavItem--active': active
1050
+ }) }, other), children));
1051
+ };
1052
+ NavItem.displayName = 'NavItem';
1053
+ NavItem.propTypes = {
1054
+ children: PropTypes.node.isRequired
1055
+ };
1056
+
910
1057
  /**
911
1058
  * Selector for NATURALLY focusable elements
912
1059
  * @type {String}
@@ -1003,11 +1150,11 @@ var SideBar = /** @class */ (function (_super) {
1003
1150
  var _a = this.state, animateClass = _a.animateClass, wide = _a.wide;
1004
1151
  // disabling no-unused-vars to prevent onDismiss from being passed through to dom element
1005
1152
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1006
- var _b = this.props, children = _b.children, className = _b.className, show = _b.show, onDismiss = _b.onDismiss, other = tslib.__rest(_b, ["children", "className", "show", "onDismiss"]);
1153
+ var _b = this.props, children = _b.children, className = _b.className, show = _b.show, onDismiss = _b.onDismiss, navProps = _b.navProps, other = tslib.__rest(_b, ["children", "className", "show", "onDismiss", "navProps"]);
1007
1154
  /* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
1008
1155
  return (React__default.createElement(React.Fragment, null,
1009
1156
  React__default.createElement(ClickOutsideListener, { onClickOutside: this.handleClickOutside },
1010
- React__default.createElement("nav", null,
1157
+ React__default.createElement("nav", tslib.__assign({}, navProps),
1011
1158
  React__default.createElement("ul", tslib.__assign({ className: classNames('SideBar', className, animateClass) }, other, { ref: this.navList, onKeyDown: this.onKeyDown }), children))),
1012
1159
  React__default.createElement(Scrim, { show: !wide && show })));
1013
1160
  /* eslint-enable jsx-a11y/no-noninteractive-element-interactions */
@@ -1320,7 +1467,7 @@ var fireCustomEvent = function (show, button) {
1320
1467
  };
1321
1468
  function Tooltip(_a) {
1322
1469
  var _this = this;
1323
- var propId = _a.id, _b = _a.placement, initialPlacement = _b === void 0 ? 'auto' : _b, children = _a.children, portal = _a.portal, target = _a.target, _c = _a.association, association = _c === void 0 ? 'aria-describedby' : _c, _d = _a.variant, variant = _d === void 0 ? 'text' : _d, _e = _a.show, showProp = _e === void 0 ? false : _e, _f = _a.hideElementOnHidden, hideElementOnHidden = _f === void 0 ? false : _f, props = tslib.__rest(_a, ["id", "placement", "children", "portal", "target", "association", "variant", "show", "hideElementOnHidden"]);
1470
+ var propId = _a.id, _b = _a.placement, initialPlacement = _b === void 0 ? 'auto' : _b, children = _a.children, portal = _a.portal, target = _a.target, _c = _a.association, association = _c === void 0 ? 'aria-describedby' : _c, _d = _a.variant, variant = _d === void 0 ? 'text' : _d, _e = _a.show, showProp = _e === void 0 ? false : _e, _f = _a.hideElementOnHidden, hideElementOnHidden = _f === void 0 ? false : _f, className = _a.className, props = tslib.__rest(_a, ["id", "placement", "children", "portal", "target", "association", "variant", "show", "hideElementOnHidden", "className"]);
1324
1471
  var id = (propId ? [propId] : nextId.useId(1, 'tooltip'))[0];
1325
1472
  var hovering = React.useRef(false);
1326
1473
  var _g = React.useState(initialPlacement), placement = _g[0], setPlacement = _g[1];
@@ -1441,7 +1588,7 @@ function Tooltip(_a) {
1441
1588
  }
1442
1589
  }, [targetElement, id]);
1443
1590
  return showTooltip || hideElementOnHidden
1444
- ? reactDom.createPortal(React__default.createElement("div", tslib.__assign({ id: id, className: classNames('Tooltip', "Tooltip--" + placement, {
1591
+ ? reactDom.createPortal(React__default.createElement("div", tslib.__assign({ id: id, className: classNames('Tooltip', "Tooltip--" + placement, className, {
1445
1592
  TooltipInfo: variant === 'info',
1446
1593
  'Tooltip--hidden': !showTooltip && hideElementOnHidden,
1447
1594
  'Tooltip--big': variant === 'big'
@@ -1470,29 +1617,61 @@ var TooltipContent = function (_a) {
1470
1617
  return (React__default.createElement("div", tslib.__assign({ className: classNames('TooltipContent', className) }, other)));
1471
1618
  };
1472
1619
 
1620
+ /**
1621
+ * Unfortunately, eslint does not recognize that this Polymorphic component has a displayName set
1622
+ *
1623
+ * We might be able to remove this if we upgrade eslint and associated plugins
1624
+ * See: https://github.com/dequelabs/cauldron/issues/451
1625
+ */
1626
+ // eslint-disable-next-line react/display-name
1473
1627
  var IconButton = React.forwardRef(function (_a, ref) {
1474
- var icon = _a.icon, label = _a.label, _b = _a.tooltipPlacement, tooltipPlacement = _b === void 0 ? 'auto' : _b, tooltipVariant = _a.tooltipVariant, tooltipPortal = _a.tooltipPortal, className = _a.className, _c = _a.variant, variant = _c === void 0 ? 'secondary' : _c, disabled = _a.disabled, other = tslib.__rest(_a, ["icon", "label", "tooltipPlacement", "tooltipVariant", "tooltipPortal", "className", "variant", "disabled"]);
1475
- var buttonRef = React.useRef();
1476
- React.useImperativeHandle(ref, function () { return buttonRef.current; });
1628
+ var _b = _a.as, Component = _b === void 0 ? 'button' : _b, icon = _a.icon, label = _a.label, _c = _a.tooltipPlacement, tooltipPlacement = _c === void 0 ? 'auto' : _c, tooltipVariant = _a.tooltipVariant, tooltipPortal = _a.tooltipPortal, className = _a.className, _d = _a.variant, variant = _d === void 0 ? 'secondary' : _d, disabled = _a.disabled, _e = _a.tabIndex, tabIndex = _e === void 0 ? 0 : _e, other = tslib.__rest(_a, ["as", "icon", "label", "tooltipPlacement", "tooltipVariant", "tooltipPortal", "className", "variant", "disabled", "tabIndex"]);
1629
+ var internalRef = React.useRef();
1630
+ React.useImperativeHandle(ref, function () { return internalRef.current; });
1631
+ // Configure additional properties based on the type of the Component
1632
+ // for accessibility
1633
+ var accessibilityProps = {};
1634
+ if (Component === 'button') {
1635
+ accessibilityProps.type = 'button';
1636
+ }
1637
+ else {
1638
+ // We don't need to set an anchor's role, since it would be redundant
1639
+ if (Component !== 'a') {
1640
+ accessibilityProps.role = other.href || other.to ? 'link' : 'button';
1641
+ }
1642
+ if (disabled) {
1643
+ accessibilityProps['aria-disabled'] = disabled;
1644
+ }
1645
+ }
1646
+ React.useEffect(function () {
1647
+ var _a;
1648
+ if (!disabled) {
1649
+ return;
1650
+ }
1651
+ (_a = internalRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-label', label);
1652
+ }, [disabled]);
1477
1653
  return (React__default.createElement(React__default.Fragment, null,
1478
- React__default.createElement("button", tslib.__assign({ type: 'button', className: classNames(className, {
1654
+ React__default.createElement(Component, tslib.__assign({ className: classNames(className, {
1479
1655
  IconButton: true,
1480
1656
  'IconButton--primary': variant === 'primary',
1481
1657
  'IconButton--secondary': variant === 'secondary',
1482
1658
  'IconButton--error': variant === 'error'
1483
- }), ref: buttonRef, disabled: disabled }, other),
1659
+ }), ref: internalRef, disabled: disabled, tabIndex: disabled ? -1 : tabIndex }, accessibilityProps, other),
1484
1660
  React__default.createElement(Icon, { type: icon })),
1485
- !disabled && (React__default.createElement(Tooltip, { target: buttonRef, placement: tooltipPlacement, variant: tooltipVariant, portal: tooltipPortal, association: "aria-labelledby", hideElementOnHidden: true }, label))));
1661
+ !disabled && (React__default.createElement(Tooltip, { target: internalRef, placement: tooltipPlacement, variant: tooltipVariant, portal: tooltipPortal, association: "aria-labelledby", hideElementOnHidden: true }, label))));
1486
1662
  });
1487
1663
  IconButton.propTypes = {
1664
+ // @ts-expect-error
1665
+ as: PropTypes.elementType,
1666
+ // @ts-expect-error
1488
1667
  icon: PropTypes.string.isRequired,
1489
1668
  label: PropTypes.string.isRequired,
1490
- // @ts-ignore
1669
+ // @ts-expect-error
1491
1670
  tooltipPlacement: PropTypes.string,
1492
- // @ts-ignore
1671
+ // @ts-expect-error
1493
1672
  tooltipVariant: PropTypes.string,
1494
1673
  tooltipPortal: PropTypes.any,
1495
- // @ts-ignore
1674
+ // @ts-expect-error
1496
1675
  variant: PropTypes.string
1497
1676
  };
1498
1677
  IconButton.displayName = 'IconButton';
@@ -2014,22 +2193,18 @@ Link.propTypes = {
2014
2193
  Link.displayName = 'Link';
2015
2194
 
2016
2195
  function Loader(_a) {
2017
- var label = _a.label, className = _a.className, other = tslib.__rest(_a, ["label", "className"]);
2018
- var props = tslib.__assign(tslib.__assign({}, other), { className: classNames('Loader', className), 'aria-hidden': !label });
2019
- if (label) {
2020
- props.role = 'progressbar';
2021
- props['aria-valuetext'] = label;
2022
- props['aria-busy'] = true;
2023
- props['aria-valuemin'] = 0;
2024
- props['aria-valuemax'] = 100;
2025
- // According to the ARIA 1.2 spec (https://www.w3.org/TR/wai-aria-1.2/#progressbar),
2026
- // the aria-valuenow attribute SHOULD be omitted because the "value" of our progress
2027
- // is "indeterminate".
2196
+ var className = _a.className, label = _a.label, other = tslib.__rest(_a, ["className", "label"]);
2197
+ var props = tslib.__assign(tslib.__assign({}, other), { className: classNames('Loader', className) });
2198
+ if (label === null || label === void 0 ? void 0 : label.length) {
2199
+ props['role'] = 'alert';
2200
+ props.children = React__default.createElement(Offscreen, null, label);
2201
+ }
2202
+ else {
2203
+ props['aria-hidden'] = true;
2028
2204
  }
2029
2205
  return React__default.createElement("div", tslib.__assign({}, props));
2030
2206
  }
2031
2207
  Loader.propTypes = {
2032
- label: PropTypes.string,
2033
2208
  className: PropTypes.string
2034
2209
  };
2035
2210
  Loader.displayName = 'Loader';
@@ -2048,18 +2223,16 @@ var tokenList = function (id, currentVal) {
2048
2223
  };
2049
2224
 
2050
2225
  var Select = React__default.forwardRef(function (_a, ref) {
2051
- var options = _a.options, children = _a.children, disabled = _a.disabled, label = _a.label, id = _a.id, required = _a.required, _b = _a.requiredText, requiredText = _b === void 0 ? 'Required' : _b, error = _a.error, value = _a.value, ariaDescribedby = _a["aria-describedby"], defaultValue = _a.defaultValue,
2052
- // eslint-disable-next-line @typescript-eslint/no-empty-function
2053
- _c = _a.onChange,
2054
- // eslint-disable-next-line @typescript-eslint/no-empty-function
2055
- onChange = _c === void 0 ? function () { } : _c, rest = tslib.__rest(_a, ["options", "children", "disabled", "label", "id", "required", "requiredText", "error", "value", 'aria-describedby', "defaultValue", "onChange"]);
2226
+ var options = _a.options, children = _a.children, disabled = _a.disabled, label = _a.label, id = _a.id, required = _a.required, _b = _a.requiredText, requiredText = _b === void 0 ? 'Required' : _b, error = _a.error, value = _a.value, ariaDescribedby = _a["aria-describedby"], defaultValue = _a.defaultValue, onChange = _a.onChange, rest = tslib.__rest(_a, ["options", "children", "disabled", "label", "id", "required", "requiredText", "error", "value", 'aria-describedby', "defaultValue", "onChange"]);
2056
2227
  if (options && children) {
2057
2228
  console.error('The Select component only takes the options props or child option elements, not both.');
2058
2229
  }
2230
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2231
+ var onChangeEvent = onChange !== null && onChange !== void 0 ? onChange : (function () { });
2059
2232
  var isControlled = typeof value !== 'undefined';
2060
- var _d = React.useState(value || defaultValue || ''), currentValue = _d[0], setCurrentValue = _d[1];
2233
+ var _c = React.useState(value || defaultValue || ''), currentValue = _c[0], setCurrentValue = _c[1];
2061
2234
  var handleChange = function (e) {
2062
- onChange(e);
2235
+ onChangeEvent(e);
2063
2236
  if (isControlled) {
2064
2237
  return;
2065
2238
  }
@@ -2103,7 +2276,7 @@ var Select = React__default.forwardRef(function (_a, ref) {
2103
2276
  })
2104
2277
  : children),
2105
2278
  React__default.createElement("div", { className: "arrow-down" })),
2106
- React__default.createElement("div", { className: "Error", id: errorId }, error)));
2279
+ error && (React__default.createElement("div", { id: errorId, className: "Error" }, error))));
2107
2280
  /* eslint-disable jsx-a11y/no-onchange */
2108
2281
  });
2109
2282
  Select.displayName = 'Select';
@@ -2150,13 +2323,13 @@ var RadioGroup = function (_a) {
2150
2323
  handleChange(radioValue);
2151
2324
  onChange(radio, (_a = inputs.current) === null || _a === void 0 ? void 0 : _a[index]);
2152
2325
  }, disabled: disabled, checked: isChecked }, other)),
2326
+ React__default.createElement("label", { htmlFor: id, className: classNames('Field__label', {
2327
+ 'Field__label--disabled': disabled
2328
+ }) }, label),
2153
2329
  React__default.createElement(Icon, { className: classNames('Radio__overlay', {
2154
2330
  'Radio__overlay--focused': isFocused,
2155
2331
  'Radio__overlay--disabled': disabled
2156
- }), type: isChecked ? 'radio-checked' : 'radio-unchecked', "aria-hidden": "true", onClick: function () { return onRadioClick(index); } }),
2157
- React__default.createElement("label", { htmlFor: id, className: classNames('Field__label', {
2158
- 'Field__label--disabled': disabled
2159
- }) }, label)));
2332
+ }), type: isChecked ? 'radio-checked' : 'radio-unchecked', "aria-hidden": "true", onClick: function () { return onRadioClick(index); } })));
2160
2333
  });
2161
2334
  // reset the input refs array
2162
2335
  // refs get clobbered every re-render anyway and this supports "dynamic" radios
@@ -2206,6 +2379,9 @@ var Checkbox = React.forwardRef(function (_a, ref) {
2206
2379
  onChange(e);
2207
2380
  }
2208
2381
  } }, other)),
2382
+ React__default.createElement("label", { className: classNames('Field__label', {
2383
+ 'Field__label--disabled': disabled
2384
+ }), htmlFor: id }, label),
2209
2385
  React__default.createElement(Icon, { className: classNames('Checkbox__overlay', {
2210
2386
  'Checkbox__overlay--disabled': disabled,
2211
2387
  'Checkbox__overlay--focused': focused,
@@ -2218,11 +2394,8 @@ var Checkbox = React.forwardRef(function (_a, ref) {
2218
2394
  else {
2219
2395
  (_b = checkRef.current) === null || _b === void 0 ? void 0 : _b.click();
2220
2396
  }
2221
- } }),
2222
- React__default.createElement("label", { className: classNames('Field__label', {
2223
- 'Field__label--disabled': disabled
2224
- }), htmlFor: id }, label)),
2225
- React__default.createElement("div", { id: errorId, className: "Error" }, error)));
2397
+ } })),
2398
+ error && (React__default.createElement("div", { id: errorId, className: "Error" }, error))));
2226
2399
  });
2227
2400
  Checkbox.displayName = 'Checkbox';
2228
2401
 
@@ -2242,12 +2415,16 @@ function TooltipTabstop(_a) {
2242
2415
  TooltipTabstop.displayName = 'TooltipTabstop';
2243
2416
 
2244
2417
  var Card = function (_a) {
2245
- var className = _a.className, other = tslib.__rest(_a, ["className"]);
2246
- return (React__default.createElement("div", tslib.__assign({ className: classNames('Card', className) }, other)));
2418
+ var className = _a.className, variant = _a.variant, other = tslib.__rest(_a, ["className", "variant"]);
2419
+ return (React__default.createElement("div", tslib.__assign({ className: classNames(className, {
2420
+ 'Card--simple': variant === 'simple',
2421
+ Card: !variant
2422
+ }) }, other)));
2247
2423
  };
2248
2424
  Card.displayName = 'Card';
2249
2425
  Card.propTypes = {
2250
- className: PropTypes.string
2426
+ className: PropTypes.string,
2427
+ variant: PropTypes.string
2251
2428
  };
2252
2429
 
2253
2430
  var CardHeader = function (_a) {
@@ -2291,21 +2468,12 @@ var TextField = /** @class */ (function (_super) {
2291
2468
  _this.onChange = _this.onChange.bind(_this);
2292
2469
  return _this;
2293
2470
  }
2294
- TextField.prototype.componentDidUpdate = function (prevProps) {
2295
- var value = this.props.value;
2296
- if (value === prevProps.value) {
2297
- return;
2298
- }
2299
- this.setState({ value: value });
2300
- };
2301
2471
  TextField.prototype.render = function () {
2302
2472
  var _this = this;
2303
2473
  var isRequired = !!this.props.required;
2304
2474
  // disabling `no-unused-vars` to prevent specific
2305
2475
  // props from being passed through to the input
2306
- var _a = this.props, label = _a.label, fieldRef = _a.fieldRef,
2307
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2308
- value = _a.value,
2476
+ var _a = this.props, label = _a.label, fieldRef = _a.fieldRef, value = _a.value,
2309
2477
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2310
2478
  onChange = _a.onChange,
2311
2479
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -2330,11 +2498,11 @@ var TextField = /** @class */ (function (_super) {
2330
2498
  'Field__text-input': !multiline,
2331
2499
  Field__textarea: multiline,
2332
2500
  'Field--has-error': error
2333
- }), id: this.inputId, value: this.state.value, onChange: this.onChange, "aria-invalid": !!error, ref: function (input) {
2501
+ }), id: this.inputId, value: typeof value !== 'undefined' ? value : this.state.value, onChange: this.onChange, "aria-invalid": !!error, ref: function (input) {
2334
2502
  _this.input = input;
2335
2503
  setRef(fieldRef, input);
2336
2504
  } }, other, inputProps)),
2337
- React__default.createElement("div", { className: "Error", id: this.errorId }, error)));
2505
+ error && (React__default.createElement("div", { className: "Error", id: this.errorId }, error))));
2338
2506
  };
2339
2507
  TextField.prototype.onChange = function (e) {
2340
2508
  var _a, _b;
@@ -2380,11 +2548,10 @@ var TextField = /** @class */ (function (_super) {
2380
2548
  }(React__default.Component));
2381
2549
 
2382
2550
  function PanelTrigger(_a) {
2383
- var children = _a.children, className = _a.className, open = _a.open, onClick = _a.onClick, other = tslib.__rest(_a, ["children", "className", "open", "onClick"]);
2384
- return (React__default.createElement("button", tslib.__assign({}, other, { className: classNames('ExpandCollapse__trigger', className), type: "button", "aria-expanded": open, onClick: onClick }),
2385
- typeof children === 'function' ? children({ open: !!open }) : children,
2386
- ' ',
2387
- React__default.createElement(Icon, { type: "chevron-" + (open ? 'down' : 'right') })));
2551
+ var children = _a.children, className = _a.className, open = _a.open, fullWidth = _a.fullWidth, onClick = _a.onClick, other = tslib.__rest(_a, ["children", "className", "open", "fullWidth", "onClick"]);
2552
+ return (React__default.createElement("button", tslib.__assign({}, other, { className: classNames('ExpandCollapse__trigger', fullWidth ? 'fullWidth' : '', className), type: "button", "aria-expanded": open, onClick: onClick }),
2553
+ React__default.createElement("div", { className: "ExpandCollapse__trigger-title" }, typeof children === 'function' ? children({ open: !!open }) : children),
2554
+ React__default.createElement(Icon, { type: open ? 'chevron-down' : 'chevron-right' })));
2388
2555
  }
2389
2556
  PanelTrigger.propTypes = {
2390
2557
  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
@@ -2506,7 +2673,7 @@ var ExpandCollapsePanel = /** @class */ (function (_super) {
2506
2673
  open: isOpen,
2507
2674
  onClick: this.handleToggle
2508
2675
  }),
2509
- React__default.createElement("div", tslib.__assign({}, other, { className: classNames(animationClass, className, {
2676
+ React__default.createElement("div", tslib.__assign({}, other, { className: classNames('ExpandCollapse__panel', animationClass, className, {
2510
2677
  'is--hidden': !isOpen && !isAnimating
2511
2678
  }), ref: this.panel }), panelElements)));
2512
2679
  };
@@ -7872,6 +8039,116 @@ TableRow.propTypes = {
7872
8039
  className: PropTypes.string
7873
8040
  };
7874
8041
 
8042
+ var Tab = React__default.forwardRef(function (_a, ref) {
8043
+ var children = _a.children, propId = _a.id, target = _a.target, other = tslib.__rest(_a, ["children", "id", "target"]);
8044
+ return (React__default.createElement("li", tslib.__assign({ id: propId, ref: ref, role: "tab" }, other), children));
8045
+ });
8046
+ Tab.displayName = 'Tab';
8047
+ Tab.propTypes = {
8048
+ target: PropTypes.any.isRequired,
8049
+ id: PropTypes.string,
8050
+ children: PropTypes.node
8051
+ };
8052
+
8053
+ var Tabs = function (_a) {
8054
+ var children = _a.children, thin = _a.thin, _b = _a.initialActiveIndex, initialActiveIndex = _b === void 0 ? 0 : _b, className = _a.className, onChange = _a.onChange, labelProp = tslib.__rest(_a, ["children", "thin", "initialActiveIndex", "className", "onChange"]);
8055
+ var _c = React.useState(initialActiveIndex), activeIndex = _c[0], setActiveIndex = _c[1];
8056
+ var tabsRef = React.useRef(null);
8057
+ var focusedTabRef = React.useRef(null);
8058
+ var tabs = React__default.Children.toArray(children).filter(function (child) { return child.type === Tab; });
8059
+ var tabCount = tabs.length;
8060
+ var handleClick = function (index) {
8061
+ setActiveIndex(index);
8062
+ };
8063
+ var handleKeyDown = function (event) {
8064
+ var key = event.key;
8065
+ var newIndex = activeIndex;
8066
+ switch (key) {
8067
+ case 'ArrowLeft': {
8068
+ newIndex = activeIndex - 1;
8069
+ // circularity
8070
+ if (newIndex === -1) {
8071
+ newIndex = tabCount - 1;
8072
+ }
8073
+ setActiveIndex(newIndex);
8074
+ break;
8075
+ }
8076
+ case 'ArrowRight': {
8077
+ newIndex = activeIndex + 1;
8078
+ // circularity
8079
+ if (newIndex === tabCount) {
8080
+ newIndex = 0;
8081
+ }
8082
+ setActiveIndex(newIndex);
8083
+ break;
8084
+ }
8085
+ case 'Home': {
8086
+ newIndex = 0;
8087
+ setActiveIndex(newIndex);
8088
+ break;
8089
+ }
8090
+ case 'End': {
8091
+ event.preventDefault();
8092
+ newIndex = tabCount - 1;
8093
+ setActiveIndex(newIndex);
8094
+ break;
8095
+ }
8096
+ }
8097
+ };
8098
+ var tabComponents = tabs.map(function (child, index) {
8099
+ var _a;
8100
+ var _b;
8101
+ var _c = child.props, target = _c.target, propId = _c.id, other = tslib.__rest(_c, ["target", "id"]);
8102
+ var selected = index === activeIndex;
8103
+ var id = (propId ? [propId] : nextId.useId(1, 'tab'))[0];
8104
+ React.useEffect(function () {
8105
+ var _a;
8106
+ (_a = target.current) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-labelledby', id);
8107
+ }, [target]);
8108
+ React.useEffect(function () {
8109
+ var _a, _b;
8110
+ index === activeIndex
8111
+ ? (_a = target.current) === null || _a === void 0 ? void 0 : _a.classList.remove('TabPanel--hidden') : (_b = target.current) === null || _b === void 0 ? void 0 : _b.classList.add('TabPanel--hidden');
8112
+ }, [activeIndex]);
8113
+ var config = tslib.__assign((_a = { id: id, className: classNames('Tab', {
8114
+ 'Tab--active': selected
8115
+ }), tabIndex: index === activeIndex ? 0 : -1 }, _a['aria-controls'] = (_b = target.current) === null || _b === void 0 ? void 0 : _b.id, _a['aria-selected'] = selected, _a.ref = index === activeIndex ? focusedTabRef : null, _a.onClick = function () { return handleClick(index); }, _a), other);
8116
+ return React__default.cloneElement(child, config);
8117
+ });
8118
+ useDidUpdate(function () {
8119
+ var _a;
8120
+ (_a = focusedTabRef.current) === null || _a === void 0 ? void 0 : _a.focus();
8121
+ if (typeof onChange === 'function') {
8122
+ onChange({ activeTabIndex: activeIndex, target: focusedTabRef.current });
8123
+ }
8124
+ }, [activeIndex]);
8125
+ return (React__default.createElement("div", { className: classNames('Tabs', className, {
8126
+ 'Tabs--thin': thin
8127
+ }), ref: tabsRef },
8128
+ React__default.createElement("ul", tslib.__assign({ role: "tablist", className: "Tablist" }, labelProp, { onKeyDown: handleKeyDown }), tabComponents)));
8129
+ };
8130
+ Tabs.displayName = 'Tabs';
8131
+ Tabs.propTypes = {
8132
+ children: PropTypes.node.isRequired,
8133
+ 'aria-label': PropTypes.string,
8134
+ 'aria-labelledby': PropTypes.string,
8135
+ initialActiveIndex: PropTypes.number,
8136
+ thin: PropTypes.bool,
8137
+ className: PropTypes.string
8138
+ };
8139
+
8140
+ var TabPanel = React.forwardRef(function (_a, ref) {
8141
+ var children = _a.children, propId = _a.id, className = _a.className, other = tslib.__rest(_a, ["children", "id", "className"]);
8142
+ var id = (propId ? [propId] : nextId.useId(1, 'tabpanel'))[0];
8143
+ return (React__default.createElement("div", tslib.__assign({ role: "tabpanel", className: classNames('TabPanel', className), id: id, ref: ref }, other), children));
8144
+ });
8145
+ TabPanel.displayName = 'TabPanel';
8146
+ TabPanel.propTypes = {
8147
+ id: PropTypes.string,
8148
+ children: PropTypes.node,
8149
+ className: PropTypes.string
8150
+ };
8151
+
7875
8152
  var commonPropTypes = {
7876
8153
  children: PropTypes.node.isRequired,
7877
8154
  className: PropTypes.string
@@ -7916,7 +8193,7 @@ var Step = function (props) {
7916
8193
  // list items, therefore it is safe to clobber
7917
8194
  // it with the contents of the tooltip in the
7918
8195
  // tab stop's accessible name.
7919
- association: "aria-labelledby" },
8196
+ association: "aria-labelledby", "aria-label": isTooltip(props) ? props.tooltipText : undefined },
7920
8197
  React__default.createElement("div", { className: "Stepper__step-indicator" }))) : (React__default.createElement(React__default.Fragment, null,
7921
8198
  React__default.createElement("div", { className: "Stepper__step-indicator" }),
7922
8199
  'children' in props && (React__default.createElement("div", { className: "Stepper__step-label" }, props.children)))))));
@@ -7925,6 +8202,7 @@ Step.displayName = 'Step';
7925
8202
  Step.propTypes = {
7926
8203
  children: PropTypes.node,
7927
8204
  tooltip: PropTypes.node,
8205
+ tooltipText: PropTypes.string,
7928
8206
  className: PropTypes.string
7929
8207
  };
7930
8208
  var Stepper = function (_a) {
@@ -7937,6 +8215,79 @@ Stepper.propTypes = {
7937
8215
  className: PropTypes.string
7938
8216
  };
7939
8217
 
8218
+ var Panel = function (_a) {
8219
+ var className = _a.className, _b = _a.title, title = _b === void 0 ? '' : _b, actions = _a.actions, children = _a.children;
8220
+ return (React__default.createElement("div", { className: classNames('Panel', className) },
8221
+ React__default.createElement("div", { className: "Panel__Header" },
8222
+ title && React__default.createElement("div", { className: "Panel__Header-title" }, title),
8223
+ actions && React__default.createElement("div", { className: "Panel__Header-actions" }, actions)),
8224
+ React__default.createElement("div", { className: "Panel__Content" }, children)));
8225
+ };
8226
+ Panel.displayName = 'Panel';
8227
+ Panel.propTypes = {
8228
+ children: PropTypes.node.isRequired,
8229
+ className: PropTypes.string
8230
+ };
8231
+
8232
+ var ProgressBar = React.forwardRef(function (_a, ref) {
8233
+ var _b = _a.progress, progress = _b === void 0 ? 0 : _b, _c = _a.progressMax, progressMax = _c === void 0 ? 100 : _c, _d = _a.progressMin, progressMin = _d === void 0 ? 0 : _d, props = tslib.__rest(_a, ["progress", "progressMax", "progressMin"]);
8234
+ var className = props.className, otherProps = tslib.__rest(props, ["className"]);
8235
+ return (React__default.createElement("div", tslib.__assign({ className: classNames('ProgressBar', className), role: "progressbar", "aria-valuemin": progressMin, "aria-valuemax": progressMax, "aria-valuenow": progress, ref: ref }, otherProps),
8236
+ React__default.createElement("div", { className: "ProgressBar--fill", style: { width: Math.min((progress / progressMax) * 100, 100) + "%" } })));
8237
+ });
8238
+ ProgressBar.displayName = 'ProgressBar';
8239
+
8240
+ var Address = function (_a) {
8241
+ var children = _a.children, className = _a.className, other = tslib.__rest(_a, ["children", "className"]);
8242
+ return (React__default.createElement("address", tslib.__assign({ className: classNames('Address', className) }, other), children));
8243
+ };
8244
+ Address.displayName = 'Address';
8245
+ Address.propTypes = {
8246
+ children: PropTypes.node.isRequired,
8247
+ className: PropTypes.string
8248
+ };
8249
+ var AddressLine = function (_a) {
8250
+ var children = _a.children, className = _a.className, other = tslib.__rest(_a, ["children", "className"]);
8251
+ return children ? (React__default.createElement("div", tslib.__assign({ className: classNames('Address__line', className) }, other), children)) : null;
8252
+ };
8253
+ AddressLine.displayName = 'AddressLine';
8254
+ AddressLine.propTypes = {
8255
+ children: PropTypes.node,
8256
+ className: PropTypes.string
8257
+ };
8258
+ var AddressCityStateZip = function (_a) {
8259
+ var city = _a.city, state = _a.state, zip = _a.zip, className = _a.className, other = tslib.__rest(_a, ["city", "state", "zip", "className"]);
8260
+ return city || state || zip ? (React__default.createElement("div", tslib.__assign({ className: classNames('Address__city-state-zip', className) }, other), [[city, state].filter(Boolean).join(', '), zip]
8261
+ .filter(Boolean)
8262
+ .join(' '))) : null;
8263
+ };
8264
+ AddressCityStateZip.displayName = 'AddressCityStateZip';
8265
+ AddressCityStateZip.propTypes = {
8266
+ city: PropTypes.node,
8267
+ state: PropTypes.node,
8268
+ zip: PropTypes.node,
8269
+ className: PropTypes.string
8270
+ };
8271
+
8272
+ /**
8273
+ * Hook to be used similarly to the React.Component#componentDidMount.
8274
+ * Executes the provided `effect` when `dependencies` change but does not
8275
+ * execute the effect initially (on mount) - only on update.
8276
+ *
8277
+ * @param effect {Function} function to be executed when dependencies update
8278
+ * @param dependencies {Any} any valid dependency argument to React.useEffect
8279
+ */
8280
+ var useDidUpdate = function (effect, dependencies) {
8281
+ var mounted = React__default.useRef(false);
8282
+ React__default.useEffect(function () {
8283
+ if (!mounted.current) {
8284
+ mounted.current = true;
8285
+ return;
8286
+ }
8287
+ effect();
8288
+ }, dependencies);
8289
+ };
8290
+
7940
8291
  var LIGHT_THEME_CLASS = 'cauldron--theme-light';
7941
8292
  var DARK_THEME_CLASS = 'cauldron--theme-dark';
7942
8293
  var ThemeContext = React.createContext({});
@@ -7986,6 +8337,9 @@ ThemeProvider.propTypes = {
7986
8337
  initialTheme: PropTypes.string
7987
8338
  };
7988
8339
 
8340
+ exports.Address = Address;
8341
+ exports.AddressCityStateZip = AddressCityStateZip;
8342
+ exports.AddressLine = AddressLine;
7989
8343
  exports.Alert = Alert;
7990
8344
  exports.AlertActions = AlertActions;
7991
8345
  exports.AlertContent = AlertContent;
@@ -8019,14 +8373,18 @@ exports.MenuItem = MenuItem;
8019
8373
  exports.Modal = Modal;
8020
8374
  exports.ModalContent = ModalContent;
8021
8375
  exports.ModalFooter = ModalFooter;
8376
+ exports.NavBar = NavBar;
8377
+ exports.NavItem = NavItem;
8022
8378
  exports.Offscreen = Offscreen;
8023
8379
  exports.OptionsMenu = OptionsMenu;
8024
8380
  exports.OptionsMenuItem = OptionsMenuItem;
8025
8381
  exports.OptionsMenuList = OptionsMenuList;
8026
8382
  exports.OptionsMenuTrigger = OptionsMenuTrigger;
8027
8383
  exports.OptionsMenuWrapper = OptionsMenuWrapper;
8384
+ exports.Panel = Panel;
8028
8385
  exports.PanelTrigger = PanelTrigger$1;
8029
8386
  exports.Pointout = Pointout;
8387
+ exports.ProgressBar = ProgressBar;
8030
8388
  exports.RadioGroup = RadioGroup;
8031
8389
  exports.Scrim = Scrim;
8032
8390
  exports.Select = Select;
@@ -8036,12 +8394,15 @@ exports.Sidebar = SideBar;
8036
8394
  exports.SkipLink = SkipLink;
8037
8395
  exports.Step = Step;
8038
8396
  exports.Stepper = Stepper;
8397
+ exports.Tab = Tab;
8398
+ exports.TabPanel = TabPanel;
8039
8399
  exports.Table = Table;
8040
8400
  exports.TableBody = TableBody;
8041
8401
  exports.TableCell = TableCell;
8042
8402
  exports.TableHead = TableHead;
8043
8403
  exports.TableHeader = TableHeader;
8044
8404
  exports.TableRow = TableRow;
8405
+ exports.Tabs = Tabs;
8045
8406
  exports.Tag = Tag;
8046
8407
  exports.TagLabel = TagLabel;
8047
8408
  exports.TextField = TextField;
@@ -8058,4 +8419,6 @@ exports.TopBarMenu = TopBarMenu;
8058
8419
  exports.TopBarTrigger = TopBarTrigger;
8059
8420
  exports.Workspace = Workspace;
8060
8421
  exports.focusableSelector = focusableSelector;
8422
+ exports.iconTypes = iconTypes;
8423
+ exports.useDidUpdate = useDidUpdate;
8061
8424
  exports.useThemeContext = useThemeContext;