@primer/react 38.42.0-rc.700f75ee0 → 38.42.0-rc.aa567b15e

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 (44) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ActionBar/ActionBar.js +9 -7
  3. package/dist/ActionBar/index.d.ts +2 -2
  4. package/dist/ActionList/Group.js +4 -5
  5. package/dist/ActionList/Item.js +2 -2
  6. package/dist/Banner/Banner.js +3 -5
  7. package/dist/Button/ButtonBase.js +3 -2
  8. package/dist/Button/IconButton.js +3 -4
  9. package/dist/Button/types.d.ts +2 -2
  10. package/dist/Card/Card.js +1 -2
  11. package/dist/Details/Details.js +2 -4
  12. package/dist/FeatureFlags/FeatureFlagScope.js +1 -0
  13. package/dist/FilteredActionList/constants.js +2 -0
  14. package/dist/FormControl/FormControl.js +55 -80
  15. package/dist/FormControl/FormControlLabel.js +1 -2
  16. package/dist/InlineMessage/InlineMessage.js +1 -2
  17. package/dist/NavList/NavList.js +3 -4
  18. package/dist/Overlay/Overlay.d.ts +2 -0
  19. package/dist/Overlay/Overlay.js +4 -2
  20. package/dist/PageLayout/usePaneWidth.js +2 -2
  21. package/dist/Popover/Popover.js +3 -5
  22. package/dist/ProgressBar/ProgressBar.js +1 -2
  23. package/dist/SegmentedControl/SegmentedControlButton.js +1 -2
  24. package/dist/Select/Select.js +2 -2
  25. package/dist/SelectPanel/SelectPanel.d.ts +1 -1
  26. package/dist/SelectPanel/SelectPanel.js +1 -1
  27. package/dist/Spinner/Spinner.js +1 -2
  28. package/dist/Textarea/Textarea.d.ts +2 -2
  29. package/dist/ToggleSwitch/ToggleSwitch.js +2 -3
  30. package/dist/TopicTag/TopicTag.js +1 -2
  31. package/dist/UnderlineNav/UnderlineNavItem.js +2 -4
  32. package/dist/deprecated/ActionList/List.js +1 -1
  33. package/dist/experimental/SelectPanel2/SelectPanel.d.ts +1 -1
  34. package/dist/hooks/useOpenAndCloseFocus.d.ts +3 -1
  35. package/dist/hooks/useOpenAndCloseFocus.js +28 -16
  36. package/dist/hooks/useOverlay.d.ts +3 -1
  37. package/dist/hooks/useOverlay.js +24 -22
  38. package/dist/internal/components/InputLabel.js +1 -2
  39. package/dist/internal/components/TextInputInnerAction.js +1 -2
  40. package/dist/internal/components/TextInputWrapper.d.ts +3 -0
  41. package/dist/internal/hooks/useThemeProvider.js +3 -3
  42. package/generated/components.json +34 -20
  43. package/generated/hooks.json +12 -0
  44. package/package.json +13 -14
package/CHANGELOG.md CHANGED
@@ -4,8 +4,18 @@
4
4
 
5
5
  ### Minor Changes
6
6
 
7
+ - [#8513](https://github.com/primer/react/pull/8513) [`1bab81a`](https://github.com/primer/react/commit/1bab81a0eb3f613c8d6b4abd36bd92d0ac6cedc4) Thanks [@tay1orjones](https://github.com/tay1orjones)! - ActionMenu, Overlay: Add `preventFocusOnClose` to let consumers manage focus when an overlay closes.
8
+
9
+ - [#8525](https://github.com/primer/react/pull/8525) [`013ab30`](https://github.com/primer/react/commit/013ab3078785ee90afe8a7562576fe0a26001b96) Thanks [@tay1orjones](https://github.com/tay1orjones)! - TextInput and Textarea: Deprecate the `contrast` prop. Omit it to use the default background.
10
+
11
+ - [#8450](https://github.com/primer/react/pull/8450) [`1528a48`](https://github.com/primer/react/commit/1528a483f9efa41fdb4bea7793c49bcde6fb4220) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - IconButton, ActionBar: Accept React nodes and icon components
12
+
7
13
  - [#8415](https://github.com/primer/react/pull/8415) [`66a9f31`](https://github.com/primer/react/commit/66a9f31611c642209f66ed68b7d43712b09dbd88) Thanks [@rickyzhangca](https://github.com/rickyzhangca)! - DataTable: Add controlled and uncontrolled row selection.
8
14
 
15
+ ### Patch Changes
16
+
17
+ - [#8508](https://github.com/primer/react/pull/8508) [`f71dce4`](https://github.com/primer/react/commit/f71dce4869dedf4cb8460ed2fa8e18edc0604198) Thanks [@namangoyal176-10](https://github.com/namangoyal176-10)! - FormControl: Prevent duplicate input rendering when layout is horizontal with non-choice inputs
18
+
9
19
  ## 38.41.0
10
20
 
11
21
  ### Minor Changes
@@ -11,8 +11,10 @@ import ActionBar_module_css_default from "./ActionBar.module.css.js";
11
11
  import React, { forwardRef, useCallback, useContext, useMemo, useRef, useState } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import { clsx } from "clsx";
14
+ import { isValidElementType } from "react-is";
14
15
  import { KebabHorizontalIcon } from "@primer/octicons-react";
15
16
  //#region src/ActionBar/ActionBar.tsx
17
+ const renderIcon = (icon) => isValidElementType(icon) && typeof icon !== "string" ? /*#__PURE__*/ React.createElement(icon) : icon;
16
18
  const ActionBarContext = /*#__PURE__*/ React.createContext({ size: "medium" });
17
19
  const ActionBarItemsRegistry = createDescendantRegistry();
18
20
  const FOCUSABLE_ITEM_SELECTOR = ":is(button, a, input, [tabindex]):not(:disabled):not([data-overflowing]):not([data-more-button-inactive])";
@@ -23,9 +25,9 @@ const renderMenuItem = (item, index) => {
23
25
  disabled,
24
26
  variant,
25
27
  children: [
26
- LeadingIcon ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: /* @__PURE__ */ jsx(LeadingIcon, {}) }) : null,
28
+ LeadingIcon !== void 0 && LeadingIcon !== null ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: renderIcon(LeadingIcon) }) : null,
27
29
  label,
28
- TrailingIcon ? /* @__PURE__ */ jsx(ActionList.TrailingVisual, { children: typeof TrailingIcon === "string" ? /* @__PURE__ */ jsx("span", { children: TrailingIcon }) : /* @__PURE__ */ jsx(TrailingIcon, {}) }) : null
30
+ TrailingIcon !== void 0 && TrailingIcon !== null ? /* @__PURE__ */ jsx(ActionList.TrailingVisual, { children: typeof TrailingIcon === "string" ? /* @__PURE__ */ jsx("span", { children: TrailingIcon }) : renderIcon(TrailingIcon) }) : null
29
31
  ]
30
32
  }) }), /* @__PURE__ */ jsx(ActionMenu.Overlay, { children: /* @__PURE__ */ jsx(ActionList, { children: items.map((subItem, subIndex) => renderMenuItem(subItem, subIndex)) }) })] }, label);
31
33
  return /* @__PURE__ */ jsxs(ActionList.Item, {
@@ -33,9 +35,9 @@ const renderMenuItem = (item, index) => {
33
35
  disabled,
34
36
  variant,
35
37
  children: [
36
- LeadingIcon ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: /* @__PURE__ */ jsx(LeadingIcon, {}) }) : null,
38
+ LeadingIcon !== void 0 && LeadingIcon !== null ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: renderIcon(LeadingIcon) }) : null,
37
39
  label,
38
- TrailingIcon ? /* @__PURE__ */ jsx(ActionList.TrailingVisual, { children: typeof TrailingIcon === "string" ? /* @__PURE__ */ jsx("span", { children: TrailingIcon }) : /* @__PURE__ */ jsx(TrailingIcon, {}) }) : null
40
+ TrailingIcon !== void 0 && TrailingIcon !== null ? /* @__PURE__ */ jsx(ActionList.TrailingVisual, { children: typeof TrailingIcon === "string" ? /* @__PURE__ */ jsx("span", { children: TrailingIcon }) : renderIcon(TrailingIcon) }) : null
39
41
  ]
40
42
  }, label);
41
43
  };
@@ -87,13 +89,13 @@ const ActionBar = ({ size = "medium", children, "aria-label": ariaLabel, "aria-l
87
89
  typeof onClick === "function" && onClick(event);
88
90
  },
89
91
  disabled,
90
- children: [Icon ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: /* @__PURE__ */ jsx(Icon, {}) }) : null, label]
92
+ children: [Icon !== void 0 && Icon !== null ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: renderIcon(Icon) }) : null, label]
91
93
  }, id);
92
94
  }
93
95
  if (menuItem.type === "menu") {
94
96
  const menuItems = menuItem.items;
95
97
  const { icon: Icon, label, returnFocusRef } = menuItem;
96
- return /* @__PURE__ */ jsxs(ActionMenu, { children: [/* @__PURE__ */ jsx(ActionMenu.Anchor, { children: /* @__PURE__ */ jsxs(ActionList.Item, { children: [Icon !== "none" ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: /* @__PURE__ */ jsx(Icon, {}) }) : null, label] }) }), /* @__PURE__ */ jsx(ActionMenu.Overlay, {
98
+ return /* @__PURE__ */ jsxs(ActionMenu, { children: [/* @__PURE__ */ jsx(ActionMenu.Anchor, { children: /* @__PURE__ */ jsxs(ActionList.Item, { children: [Icon !== "none" ? /* @__PURE__ */ jsx(ActionList.LeadingVisual, { children: renderIcon(Icon) }) : null, label] }) }), /* @__PURE__ */ jsx(ActionMenu.Overlay, {
97
99
  ...returnFocusRef && { returnFocusRef },
98
100
  children: /* @__PURE__ */ jsx(ActionList, { children: menuItems.map((item, index) => renderMenuItem(item, index)) })
99
101
  })] }, id);
@@ -199,7 +201,7 @@ const ActionBarMenu = /*#__PURE__*/ forwardRef(({ "aria-label": ariaLabel, icon,
199
201
  const { dataOverflowingAttr } = useActionBarItem(ref, useMemo(() => ({
200
202
  type: "menu",
201
203
  label: ariaLabel,
202
- icon: overflowIcon ? overflowIcon : icon,
204
+ icon: overflowIcon !== void 0 ? overflowIcon : icon,
203
205
  returnFocusRef,
204
206
  items
205
207
  }), [
@@ -8,7 +8,7 @@ declare const ActionBar: import("react").FC<import("react").PropsWithChildren<Ac
8
8
  disabled?: boolean;
9
9
  } & {
10
10
  alignContent?: AlignContent;
11
- icon?: React.FunctionComponent<import("@primer/octicons-react").IconProps> | React.ElementType | React.ReactElement<any> | null;
11
+ icon?: React.ReactNode | React.ComponentType<import("@primer/octicons-react").IconProps> | React.ExoticComponent<import("@primer/octicons-react").IconProps>;
12
12
  leadingVisual?: React.ElementType | React.ReactElement<any> | null;
13
13
  trailingVisual?: React.ElementType | React.ReactElement<any> | null;
14
14
  trailingAction?: React.ElementType | null;
@@ -39,7 +39,7 @@ declare const ActionBar: import("react").FC<import("react").PropsWithChildren<Ac
39
39
  'aria-label': string;
40
40
  'aria-labelledby'?: undefined;
41
41
  } & {
42
- icon: React.ElementType;
42
+ icon: React.ReactNode | React.ComponentType<import("@primer/octicons-react").IconProps> | React.ExoticComponent<import("@primer/octicons-react").IconProps>;
43
43
  notificationIndicator?: "button" | "icon";
44
44
  unsafeDisableTooltip?: boolean;
45
45
  description?: string;
@@ -60,7 +60,7 @@ const HeadingWrap = ({ as = "div", children, className, ...rest }) => {
60
60
  }, children);
61
61
  };
62
62
  const Group = (t0) => {
63
- var _ariaLabel, _title, _slots$groupHeading;
63
+ var _slots$groupHeading;
64
64
  const $ = c(38);
65
65
  let ariaLabel;
66
66
  let auxiliaryText;
@@ -144,7 +144,7 @@ const Group = (t0) => {
144
144
  $[22] = t7;
145
145
  } else t7 = $[22];
146
146
  const t8 = listRole ? void 0 : groupHeadingId;
147
- const t9 = (_ariaLabel = ariaLabel) !== null && _ariaLabel !== void 0 ? _ariaLabel : listRole ? (_title = title) !== null && _title !== void 0 ? _title : (_slots$groupHeading = slots.groupHeading) === null || _slots$groupHeading === void 0 ? void 0 : _slots$groupHeading.props.children : void 0;
147
+ const t9 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : listRole ? title !== null && title !== void 0 ? title : (_slots$groupHeading = slots.groupHeading) === null || _slots$groupHeading === void 0 ? void 0 : _slots$groupHeading.props.children : void 0;
148
148
  const t10 = role || listRole && "group";
149
149
  const t11 = slots.groupHeading ? childrenWithoutSlots : props.children;
150
150
  let t12;
@@ -254,7 +254,6 @@ const GroupHeadingImpl = (t0) => {
254
254
  unnecessaryAsForListboxOrMenu && invariant(false, `Looks like you are trying to set a heading level to a ${listRole} role. Group headings for ${listRole} type action lists are for representational purposes, and rendered as divs. Therefore they don't need a heading level.`);
255
255
  let t4;
256
256
  if ($[10] !== _internalBackwardCompatibleTitle || $[11] !== as || $[12] !== auxiliaryText || $[13] !== className || $[14] !== groupHeadingId || $[15] !== headingChildren || $[16] !== headingWrapElement || $[17] !== listRole || $[18] !== props || $[19] !== trailingAction || $[20] !== variant) {
257
- var _internalBackwardComp, _internalBackwardComp2;
258
257
  t4 = /* @__PURE__ */ jsx(Fragment$1, { children: listRole && listRole !== "list" ? /* @__PURE__ */ jsxs(HeadingWrap, {
259
258
  role: "presentation",
260
259
  className: Group_module_css_default.GroupHeadingWrap,
@@ -266,7 +265,7 @@ const GroupHeadingImpl = (t0) => {
266
265
  children: [/* @__PURE__ */ jsx("span", {
267
266
  className: clsx(className, Group_module_css_default.GroupHeading),
268
267
  id: groupHeadingId,
269
- children: (_internalBackwardComp = _internalBackwardCompatibleTitle) !== null && _internalBackwardComp !== void 0 ? _internalBackwardComp : headingChildren
268
+ children: _internalBackwardCompatibleTitle !== null && _internalBackwardCompatibleTitle !== void 0 ? _internalBackwardCompatibleTitle : headingChildren
270
269
  }), auxiliaryText && /* @__PURE__ */ jsx("div", {
271
270
  className: ActionList_module_css_default.Description,
272
271
  children: auxiliaryText
@@ -283,7 +282,7 @@ const GroupHeadingImpl = (t0) => {
283
282
  as: as || "h3",
284
283
  id: groupHeadingId,
285
284
  ...props,
286
- children: (_internalBackwardComp2 = _internalBackwardCompatibleTitle) !== null && _internalBackwardComp2 !== void 0 ? _internalBackwardComp2 : headingChildren
285
+ children: _internalBackwardCompatibleTitle !== null && _internalBackwardCompatibleTitle !== void 0 ? _internalBackwardCompatibleTitle : headingChildren
287
286
  }),
288
287
  auxiliaryText && /* @__PURE__ */ jsx("div", {
289
288
  className: ActionList_module_css_default.Description,
@@ -138,7 +138,7 @@ const listRoleTypes = [
138
138
  "tree"
139
139
  ];
140
140
  const UnwrappedItem = (t0, forwardedRef) => {
141
- var _slots$trailingVisual, _slots$description$pr, _slots$description, _slots$trailingAction, _PrivateTooltipText2;
141
+ var _slots$trailingVisual, _slots$description$pr, _slots$description, _slots$trailingAction;
142
142
  const $ = c(162);
143
143
  let _PrivateItemWrapper;
144
144
  let _PrivateTooltipText;
@@ -470,7 +470,7 @@ const UnwrappedItem = (t0, forwardedRef) => {
470
470
  $[91] = className;
471
471
  $[92] = t35;
472
472
  } else t35 = $[92];
473
- const t36 = (_PrivateTooltipText2 = _PrivateTooltipText) !== null && _PrivateTooltipText2 !== void 0 ? _PrivateTooltipText2 : truncatedText;
473
+ const t36 = _PrivateTooltipText !== null && _PrivateTooltipText !== void 0 ? _PrivateTooltipText : truncatedText;
474
474
  const t37 = listSemantics ? null : forwardedRef;
475
475
  let t38;
476
476
  let t39;
@@ -20,7 +20,6 @@ const iconForVariant = {
20
20
  warning: /* @__PURE__ */ jsx(AlertIcon, {})
21
21
  };
22
22
  const Banner = /*#__PURE__*/ React.forwardRef(function Banner(t0, forwardRef) {
23
- var _leadingVisual, _labelledBy;
24
23
  const $ = c(64);
25
24
  let children;
26
25
  let className;
@@ -84,7 +83,7 @@ const Banner = /*#__PURE__*/ React.forwardRef(function Banner(t0, forwardRef) {
84
83
  const ref = useMergedRefs(forwardRef, bannerRef);
85
84
  const supportsCustomIcon = variant === "info" || variant === "upsell";
86
85
  const titleId = useId$1();
87
- const visual = (_leadingVisual = leadingVisual) !== null && _leadingVisual !== void 0 ? _leadingVisual : icon;
86
+ const visual = leadingVisual !== null && leadingVisual !== void 0 ? leadingVisual : icon;
88
87
  let t4;
89
88
  let t5;
90
89
  if ($[17] !== title) {
@@ -109,7 +108,7 @@ const Banner = /*#__PURE__*/ React.forwardRef(function Banner(t0, forwardRef) {
109
108
  $[20] = titleId;
110
109
  $[21] = t6;
111
110
  } else t6 = $[21];
112
- const t7 = (_labelledBy = labelledBy) !== null && _labelledBy !== void 0 ? _labelledBy : label ? void 0 : titleId;
111
+ const t7 = labelledBy !== null && labelledBy !== void 0 ? labelledBy : label ? void 0 : titleId;
113
112
  const t8 = labelledBy ? void 0 : label;
114
113
  let t9;
115
114
  if ($[22] !== className) {
@@ -249,7 +248,6 @@ const Banner = /*#__PURE__*/ React.forwardRef(function Banner(t0, forwardRef) {
249
248
  return t24;
250
249
  });
251
250
  function BannerTitle(props) {
252
- var _id;
253
251
  const $ = c(14);
254
252
  let children;
255
253
  let className;
@@ -273,7 +271,7 @@ function BannerTitle(props) {
273
271
  }
274
272
  const Heading = t0 === void 0 ? "h2" : t0;
275
273
  const context = React.useContext(BannerContext);
276
- const titleId = (_id = id) !== null && _id !== void 0 ? _id : context === null || context === void 0 ? void 0 : context.titleId;
274
+ const titleId = id !== null && id !== void 0 ? id : context === null || context === void 0 ? void 0 : context.titleId;
277
275
  let t1;
278
276
  if ($[6] !== className) {
279
277
  t1 = clsx(className, Banner_module_css_default.BannerTitle);
@@ -10,7 +10,7 @@ import { useFeatureFlag } from "../FeatureFlags/useFeatureFlag.js";
10
10
  import React, { forwardRef } from "react";
11
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
12
  import { clsx } from "clsx";
13
- import { isElement } from "react-is";
13
+ import { isElement, isValidElementType } from "react-is";
14
14
  //#region src/Button/ButtonBase.tsx
15
15
  const BUTTON_LOADING_DISABLED_STYLES_FEATURE_FLAG = "primer_react_button_loading_disabled_styles";
16
16
  const renderModuleVisual = (Visual, loading, visualName, counterLabel) => /* @__PURE__ */ jsx("span", {
@@ -18,6 +18,7 @@ const renderModuleVisual = (Visual, loading, visualName, counterLabel) => /* @__
18
18
  className: clsx(!counterLabel && ButtonBase_module_css_default.Visual, visualName === "leadingVisual" && ButtonBase_module_css_default.LeadingVisual, loading ? ButtonBase_module_css_default.LoadingSpinner : ButtonBase_module_css_default.VisualWrap),
19
19
  children: loading ? /* @__PURE__ */ jsx(Spinner, { size: "small" }) : isElement(Visual) ? Visual : /* @__PURE__ */ jsx(Visual, {})
20
20
  });
21
+ const renderIcon = (icon) => isValidElementType(icon) && typeof icon !== "string" ? /*#__PURE__*/ React.createElement(icon) : icon;
21
22
  const ButtonBase = /*#__PURE__*/ forwardRef(({ children, as: Component = "button", ...props }, forwardedRef) => {
22
23
  const { leadingVisual: LeadingVisual, trailingVisual: TrailingVisual, trailingAction: TrailingAction, ["aria-describedby"]: ariaDescribedBy, ["aria-labelledby"]: ariaLabelledBy, count, icon: Icon, id, variant = "default", size = "medium", alignContent = "center", block = false, loading, loadingAnnouncement = "Loading", inactive, onClick, labelWrap, notificationIndicator, className, ...rest } = props;
23
24
  const innerRef = React.useRef(null);
@@ -56,7 +57,7 @@ const ButtonBase = /*#__PURE__*/ forwardRef(({ children, as: Component = "button
56
57
  "aria-labelledby": loading ? [`${uuid}-label`, ariaLabelledBy].filter((labelID) => Boolean(labelID)).join(" ") : ariaLabelledBy,
57
58
  id,
58
59
  onClick: loading ? void 0 : onClick,
59
- children: Icon ? loading ? /* @__PURE__ */ jsx(Spinner, { size: "small" }) : isElement(Icon) ? Icon : /* @__PURE__ */ jsx(Icon, {}) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("span", {
60
+ children: Icon !== void 0 && Icon !== null ? loading ? /* @__PURE__ */ jsx(Spinner, { size: "small" }) : renderIcon(Icon) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("span", {
60
61
  "data-component": "buttonContent",
61
62
  "data-align": alignContent,
62
63
  className: ButtonBase_module_css_default.ButtonContent,
@@ -80,17 +80,16 @@ const IconButton = /*#__PURE__*/ forwardRef((t0, forwardedRef) => {
80
80
  } else t3 = $[19];
81
81
  return t3;
82
82
  } else {
83
- var _description, _keybindingHint, _keyshortcuts;
84
- const tooltipText = (_description = description) !== null && _description !== void 0 ? _description : ariaLabel;
83
+ const tooltipText = description !== null && description !== void 0 ? description : ariaLabel;
85
84
  const t2 = description ? void 0 : "label";
86
- const t3 = (_keybindingHint = keybindingHint) !== null && _keybindingHint !== void 0 ? _keybindingHint : keyshortcuts;
85
+ const t3 = keybindingHint !== null && keybindingHint !== void 0 ? keybindingHint : keyshortcuts;
87
86
  let t4;
88
87
  if ($[20] !== className) {
89
88
  t4 = clsx(className, ButtonBase_module_css_default.IconButton);
90
89
  $[20] = className;
91
90
  $[21] = t4;
92
91
  } else t4 = $[21];
93
- const t5 = (_keyshortcuts = keyshortcuts) !== null && _keyshortcuts !== void 0 ? _keyshortcuts : void 0;
92
+ const t5 = keyshortcuts !== null && keyshortcuts !== void 0 ? keyshortcuts : void 0;
94
93
  const t6 = description ? ariaLabel : void 0;
95
94
  let t7;
96
95
  if ($[22] !== Icon || $[23] !== props || $[24] !== t4 || $[25] !== t5 || $[26] !== t6) {
@@ -56,7 +56,7 @@ type ButtonProps = {
56
56
  /**
57
57
  * The icon for the IconButton
58
58
  */
59
- icon?: React.FunctionComponent<IconProps> | React.ElementType | React.ReactElement<any> | null;
59
+ icon?: React.ReactNode | React.ComponentType<IconProps> | React.ExoticComponent<IconProps>;
60
60
  /**
61
61
  * The leading visual which comes before the button content
62
62
  */
@@ -80,7 +80,7 @@ type ButtonProps = {
80
80
  notificationIndicator?: ButtonNotificationIndicatorPlacement;
81
81
  } & ButtonBaseProps;
82
82
  type IconButtonProps = ButtonA11yProps & {
83
- icon: React.ElementType;
83
+ icon: React.ReactNode | React.ComponentType<IconProps> | React.ExoticComponent<IconProps>;
84
84
  /**
85
85
  * Displays a visual indicator for new activity on the button boundary or icon. Consumers are
86
86
  * responsible for communicating the indicator's meaning through an accessible label or description.
package/dist/Card/Card.js CHANGED
@@ -343,7 +343,6 @@ CardImage.displayName = "Card.Image";
343
343
  * automatically wired to the section's `aria-labelledby`.
344
344
  */
345
345
  const CardHeading = /*#__PURE__*/ forwardRef(function CardHeading(t0, ref) {
346
- var _id;
347
346
  const $ = c(15);
348
347
  let children;
349
348
  let className;
@@ -367,7 +366,7 @@ const CardHeading = /*#__PURE__*/ forwardRef(function CardHeading(t0, ref) {
367
366
  }
368
367
  const Component = t1 === void 0 ? "h3" : t1;
369
368
  const { titleId } = useContext(CardContext);
370
- const t2 = (_id = id) !== null && _id !== void 0 ? _id : titleId;
369
+ const t2 = id !== null && id !== void 0 ? id : titleId;
371
370
  let t3;
372
371
  if ($[6] !== className) {
373
372
  t3 = clsx(Card_module_css_default.CardHeading, className);
@@ -7,7 +7,6 @@ import { jsx } from "react/jsx-runtime";
7
7
  import { clsx } from "clsx";
8
8
  //#region src/Details/Details.tsx
9
9
  const Root = /*#__PURE__*/ React.forwardRef((t0, forwardRef) => {
10
- var _dataComponent;
11
10
  const $ = c(15);
12
11
  let children;
13
12
  let className;
@@ -51,7 +50,7 @@ const Root = /*#__PURE__*/ React.forwardRef((t0, forwardRef) => {
51
50
  $[7] = className;
52
51
  $[8] = t3;
53
52
  } else t3 = $[8];
54
- const t4 = (_dataComponent = dataComponent) !== null && _dataComponent !== void 0 ? _dataComponent : "Details";
53
+ const t4 = dataComponent !== null && dataComponent !== void 0 ? dataComponent : "Details";
55
54
  let t5;
56
55
  if ($[9] !== children || $[10] !== ref || $[11] !== rest || $[12] !== t3 || $[13] !== t4) {
57
56
  t5 = /* @__PURE__ */ jsx("details", {
@@ -72,7 +71,6 @@ const Root = /*#__PURE__*/ React.forwardRef((t0, forwardRef) => {
72
71
  });
73
72
  Root.displayName = "Details";
74
73
  function Summary(t0) {
75
- var _as;
76
74
  const $ = c(9);
77
75
  let as;
78
76
  let children;
@@ -88,7 +86,7 @@ function Summary(t0) {
88
86
  children = $[2];
89
87
  props = $[3];
90
88
  }
91
- const Component = (_as = as) !== null && _as !== void 0 ? _as : "summary";
89
+ const Component = as !== null && as !== void 0 ? as : "summary";
92
90
  const t1 = Component === "summary" ? null : "summary";
93
91
  let t2;
94
92
  if ($[4] !== Component || $[5] !== children || $[6] !== props || $[7] !== t1) {
@@ -9,6 +9,7 @@ var FeatureFlagScope = class FeatureFlagScope {
9
9
  for (const [key, value] of b.flags) merged.flags.set(key, value);
10
10
  return merged;
11
11
  }
12
+ flags;
12
13
  constructor(flags = {}) {
13
14
  this.flags = /* @__PURE__ */ new Map();
14
15
  for (const [key, value] of Object.entries(flags)) this.flags.set(key, value !== null && value !== void 0 ? value : false);
@@ -1,5 +1,7 @@
1
1
  //#region src/FilteredActionList/constants.ts
2
2
  var FilteredActionListLoadingType = class {
3
+ name;
4
+ appearsInBody;
3
5
  constructor(name, appearsInBody) {
4
6
  this.name = name;
5
7
  this.appearsInBody = appearsInBody;
@@ -24,7 +24,7 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
24
24
  import { clsx } from "clsx";
25
25
  var FormControl_default = Object.assign(/* @__PURE__ */ React.forwardRef((t0, ref) => {
26
26
  var _slots$validation, _slots$label;
27
- const $ = c(32);
27
+ const $ = c(23);
28
28
  const { children, disabled: disabledProp, layout: t1, id: idProp, required, className, style } = t0;
29
29
  const layout = t1 === void 0 ? "vertical" : t1;
30
30
  let t2;
@@ -78,87 +78,65 @@ var FormControl_default = Object.assign(/* @__PURE__ */ React.forwardRef((t0, re
78
78
  warning(isRadioInput && childrenWithoutSlots.find(_temp), "An individual radio cannot be a required field.");
79
79
  } else warning(!!slots.leadingVisual, "A leading visual is only rendered for a checkbox or radio form control. If you want to render a leading visual inside of your input, check if your input supports a leading visual.");
80
80
  const isLabelHidden = (_slots$label = slots.label) === null || _slots$label === void 0 ? void 0 : _slots$label.props.visuallyHidden;
81
- const t4 = /*#__PURE__*/ React.isValidElement(InputComponent) ? /*#__PURE__*/ React.cloneElement(InputComponent, {
82
- id,
83
- disabled,
84
- required: required && !isRadioInput,
85
- "aria-describedby": captionId
86
- }) : null;
87
- let t5;
88
- if ($[4] !== childrenWithoutSlots) {
89
- t5 = childrenWithoutSlots.filter(_temp2);
90
- $[4] = childrenWithoutSlots;
91
- $[5] = t5;
92
- } else t5 = $[5];
93
- let t6;
94
- if ($[6] !== t4 || $[7] !== t5) {
95
- t6 = /* @__PURE__ */ jsxs("div", {
96
- className: FormControl_module_css_default.ControlChoiceInputs,
97
- children: [t4, t5]
98
- });
99
- $[6] = t4;
100
- $[7] = t5;
101
- $[8] = t6;
102
- } else t6 = $[8];
103
- let t7;
104
- if ($[9] !== disabled || $[10] !== slots.caption || $[11] !== slots.leadingVisual) {
105
- t7 = slots.leadingVisual ? /* @__PURE__ */ jsx("div", {
81
+ let t4;
82
+ if ($[4] !== disabled || $[5] !== slots.caption || $[6] !== slots.leadingVisual) {
83
+ t4 = slots.leadingVisual ? /* @__PURE__ */ jsx("div", {
106
84
  className: FormControl_module_css_default.LeadingVisual,
107
85
  "data-disabled": disabled ? "" : void 0,
108
86
  "data-has-caption": slots.caption ? "" : void 0,
109
87
  children: slots.leadingVisual
110
88
  }) : null;
111
- $[9] = disabled;
112
- $[10] = slots.caption;
113
- $[11] = slots.leadingVisual;
114
- $[12] = t7;
115
- } else t7 = $[12];
116
- let t8;
117
- if ($[13] !== slots.caption || $[14] !== slots.label) {
118
- t8 = /* @__PURE__ */ jsxs("div", {
89
+ $[4] = disabled;
90
+ $[5] = slots.caption;
91
+ $[6] = slots.leadingVisual;
92
+ $[7] = t4;
93
+ } else t4 = $[7];
94
+ let t5;
95
+ if ($[8] !== slots.caption || $[9] !== slots.label) {
96
+ t5 = /* @__PURE__ */ jsxs("div", {
119
97
  className: FormControl_module_css_default.LabelContainer,
120
98
  children: [slots.label, slots.caption]
121
99
  });
122
- $[13] = slots.caption;
123
- $[14] = slots.label;
124
- $[15] = t8;
125
- } else t8 = $[15];
126
- let t9;
127
- if ($[16] !== t6 || $[17] !== t7 || $[18] !== t8) {
128
- t9 = /* @__PURE__ */ jsxs(Fragment$1, { children: [
129
- t6,
130
- t7,
131
- t8
132
- ] });
133
- $[16] = t6;
134
- $[17] = t7;
135
- $[18] = t8;
136
- $[19] = t9;
137
- } else t9 = $[19];
138
- const InputChildren = t9;
100
+ $[8] = slots.caption;
101
+ $[9] = slots.label;
102
+ $[10] = t5;
103
+ } else t5 = $[10];
104
+ const InputChildren = /* @__PURE__ */ jsxs(Fragment$1, { children: [
105
+ /* @__PURE__ */ jsxs("div", {
106
+ className: FormControl_module_css_default.ControlChoiceInputs,
107
+ children: [/*#__PURE__*/ React.isValidElement(InputComponent) ? /*#__PURE__*/ React.cloneElement(InputComponent, {
108
+ id,
109
+ disabled,
110
+ required: required && !isRadioInput,
111
+ "aria-describedby": captionId
112
+ }) : null, childrenWithoutSlots.filter((child_1) => /*#__PURE__*/ React.isValidElement(child_1) && !expectedInputComponents.some((inputComponent_0) => child_1.type === inputComponent_0 || isSlot(child_1, inputComponent_0)))]
113
+ }),
114
+ t4,
115
+ t5
116
+ ] });
139
117
  const T0 = FormControlContextProvider;
140
- const t10 = !isSelectPanelInput;
141
- let t11;
142
- if ($[20] !== captionId || $[21] !== disabled || $[22] !== id || $[23] !== labelId || $[24] !== required || $[25] !== t10 || $[26] !== validationMessageId) {
143
- t11 = {
118
+ const t6 = !isSelectPanelInput;
119
+ let t7;
120
+ if ($[11] !== captionId || $[12] !== disabled || $[13] !== id || $[14] !== labelId || $[15] !== required || $[16] !== t6 || $[17] !== validationMessageId) {
121
+ t7 = {
144
122
  captionId,
145
123
  disabled,
146
124
  id,
147
125
  required,
148
126
  validationMessageId,
149
- isReferenced: t10,
127
+ isReferenced: t6,
150
128
  labelId
151
129
  };
152
- $[20] = captionId;
153
- $[21] = disabled;
154
- $[22] = id;
155
- $[23] = labelId;
156
- $[24] = required;
157
- $[25] = t10;
158
- $[26] = validationMessageId;
159
- $[27] = t11;
160
- } else t11 = $[27];
161
- const t12 = isChoiceInput || layout === "horizontal" ? /* @__PURE__ */ jsx("div", {
130
+ $[11] = captionId;
131
+ $[12] = disabled;
132
+ $[13] = id;
133
+ $[14] = labelId;
134
+ $[15] = required;
135
+ $[16] = t6;
136
+ $[17] = validationMessageId;
137
+ $[18] = t7;
138
+ } else t7 = $[18];
139
+ const t8 = isChoiceInput || layout === "horizontal" ? /* @__PURE__ */ jsx("div", {
162
140
  ref,
163
141
  "data-has-leading-visual": slots.leadingVisual ? "" : void 0,
164
142
  className: clsx(className, FormControl_module_css_default.ControlHorizontalLayout),
@@ -188,18 +166,18 @@ var FormControl_default = Object.assign(/* @__PURE__ */ React.forwardRef((t0, re
188
166
  slots.caption
189
167
  ]
190
168
  });
191
- let t13;
192
- if ($[28] !== T0 || $[29] !== t11 || $[30] !== t12) {
193
- t13 = /* @__PURE__ */ jsx(T0, {
194
- value: t11,
195
- children: t12
169
+ let t9;
170
+ if ($[19] !== T0 || $[20] !== t7 || $[21] !== t8) {
171
+ t9 = /* @__PURE__ */ jsx(T0, {
172
+ value: t7,
173
+ children: t8
196
174
  });
197
- $[28] = T0;
198
- $[29] = t11;
199
- $[30] = t12;
200
- $[31] = t13;
201
- } else t13 = $[31];
202
- return t13;
175
+ $[19] = T0;
176
+ $[20] = t7;
177
+ $[21] = t8;
178
+ $[22] = t9;
179
+ } else t9 = $[22];
180
+ return t9;
203
181
  }), {
204
182
  __SLOT__: Symbol("FormControl"),
205
183
  Caption: FormControlCaption,
@@ -211,8 +189,5 @@ function _temp(child_0) {
211
189
  var _child_0$props;
212
190
  return /*#__PURE__*/ React.isValidElement(child_0) && ((_child_0$props = child_0.props) === null || _child_0$props === void 0 ? void 0 : _child_0$props.required);
213
191
  }
214
- function _temp2(child_1) {
215
- return /*#__PURE__*/ React.isValidElement(child_1) && ![Checkbox, Radio].some((inputComponent_0) => child_1.type === inputComponent_0 || isSlot(child_1, inputComponent_0));
216
- }
217
192
  //#endregion
218
193
  export { FormControl_default as default };
@@ -4,7 +4,6 @@ import { InputLabel } from "../internal/components/InputLabel.js";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/FormControl/FormControlLabel.tsx
6
6
  const FormControlLabel = (t0) => {
7
- var _id;
8
7
  const $ = c(26);
9
8
  let as;
10
9
  let children;
@@ -40,7 +39,7 @@ const FormControlLabel = (t0) => {
40
39
  }
41
40
  const requiredIndicator = t1 === void 0 ? true : t1;
42
41
  const { disabled, id: formControlId, required, isReferenced, labelId } = useFormControlContext();
43
- const resolvedId = (_id = id) !== null && _id !== void 0 ? _id : labelId;
42
+ const resolvedId = id !== null && id !== void 0 ? id : labelId;
44
43
  let t2;
45
44
  if ($[10] !== as || $[11] !== className || $[12] !== disabled || $[13] !== formControlId || $[14] !== htmlFor || $[15] !== isReferenced || $[16] !== props || $[17] !== required || $[18] !== requiredIndicator || $[19] !== requiredText || $[20] !== resolvedId || $[21] !== visuallyHidden) {
46
45
  t2 = as === "legend" || as === "span" ? {
@@ -30,7 +30,6 @@ const smallIcons = {
30
30
  })
31
31
  };
32
32
  function InlineMessage(t0) {
33
- var _variant;
34
33
  const $ = c(19);
35
34
  let LeadingVisual;
36
35
  let children;
@@ -82,7 +81,7 @@ function InlineMessage(t0) {
82
81
  $[10] = className;
83
82
  $[11] = t2;
84
83
  } else t2 = $[11];
85
- const t3 = (_variant = variant) !== null && _variant !== void 0 ? _variant : void 0;
84
+ const t3 = variant !== null && variant !== void 0 ? variant : void 0;
86
85
  let t4;
87
86
  if ($[12] !== children || $[13] !== icon || $[14] !== rest || $[15] !== size || $[16] !== t2 || $[17] !== t3) {
88
87
  t4 = /* @__PURE__ */ jsxs("div", {
@@ -25,7 +25,7 @@ function levelToHeadingTag(level) {
25
25
  return `h${Math.min(Math.max(level, 1), 4)}`;
26
26
  }
27
27
  const Root = /*#__PURE__*/ React.forwardRef((t0, ref) => {
28
- var _heading$props$id, _ariaLabelledby;
28
+ var _heading$props$id;
29
29
  const $ = c(26);
30
30
  let ariaLabel;
31
31
  let ariaLabelledby;
@@ -64,7 +64,7 @@ const Root = /*#__PURE__*/ React.forwardRef((t0, ref) => {
64
64
  $[8] = t2;
65
65
  } else t2 = $[8];
66
66
  const headingLevel = t2;
67
- const navLabelledby = (_ariaLabelledby = ariaLabelledby) !== null && _ariaLabelledby !== void 0 ? _ariaLabelledby : ariaLabel ? void 0 : headingId;
67
+ const navLabelledby = ariaLabelledby !== null && ariaLabelledby !== void 0 ? ariaLabelledby : ariaLabel ? void 0 : headingId;
68
68
  let t3;
69
69
  if ($[9] !== heading || $[10] !== headingId) {
70
70
  t3 = heading ? /*#__PURE__*/ React.cloneElement(heading, { id: headingId }) : null;
@@ -601,8 +601,7 @@ const GroupHeadingImpl = (t0) => {
601
601
  const headingLevel = React.useContext(NavListHeadingLevelContext);
602
602
  let t1;
603
603
  if ($[4] !== as || $[5] !== headingLevel) {
604
- var _as;
605
- t1 = (_as = as) !== null && _as !== void 0 ? _as : headingLevel ? levelToHeadingTag(headingLevel + 1) : "h3";
604
+ t1 = as !== null && as !== void 0 ? as : headingLevel ? levelToHeadingTag(headingLevel + 1) : "h3";
606
605
  $[4] = as;
607
606
  $[5] = headingLevel;
608
607
  $[6] = t1;
@@ -54,6 +54,7 @@ type ContainerProps = {
54
54
  portalContainerName?: string;
55
55
  preventOverflow?: boolean;
56
56
  preventFocusOnOpen?: boolean;
57
+ preventFocusOnClose?: boolean;
57
58
  returnFocusRef: React.RefObject<HTMLElement | null>;
58
59
  };
59
60
  type internalOverlayProps = Merge<OwnOverlayProps, ContainerProps>;
@@ -68,6 +69,7 @@ type internalOverlayProps = Merge<OwnOverlayProps, ContainerProps>;
68
69
  * @param portalContainerName Optional. The name of the portal container to render the Overlay into.
69
70
  * @param preventOverflow Optional. The Overlay width will be adjusted responsively if there is not enough space to display the Overlay. If `preventOverflow` is `true`, the width of the `Overlay` will not be adjusted.
70
71
  * @param preventFocusOnOpen Optional. If 'true', focus will not be applied when the component is first mounted, even if initialFocusRef prop is given.
72
+ * @param preventFocusOnClose Optional. If true, focus will not be returned when the component is unmounted. Consumers must manage focus themselves.
71
73
  * @param returnFocusRef Required. Ref for the element to focus when the `Overlay` is closed.
72
74
  * @param right Optional. Horizontal right position of the overlay, relative to its closest positioned ancestor (often its `Portal`).
73
75
  * @param width Sets the width of the `Overlay`, pick from our set list of widths, or pass `auto` to automatically set the width based on the content of the `Overlay`. `small` corresponds to `256px`, `medium` corresponds to `320px`, `large` corresponds to `480px`, `xlarge` corresponds to `640px`, `xxlarge` corresponds to `960px`.
@@ -76,12 +76,13 @@ const BaseOverlay = /*#__PURE__*/ React.forwardRef(({ visibility, height, width,
76
76
  * @param portalContainerName Optional. The name of the portal container to render the Overlay into.
77
77
  * @param preventOverflow Optional. The Overlay width will be adjusted responsively if there is not enough space to display the Overlay. If `preventOverflow` is `true`, the width of the `Overlay` will not be adjusted.
78
78
  * @param preventFocusOnOpen Optional. If 'true', focus will not be applied when the component is first mounted, even if initialFocusRef prop is given.
79
+ * @param preventFocusOnClose Optional. If true, focus will not be returned when the component is unmounted. Consumers must manage focus themselves.
79
80
  * @param returnFocusRef Required. Ref for the element to focus when the `Overlay` is closed.
80
81
  * @param right Optional. Horizontal right position of the overlay, relative to its closest positioned ancestor (often its `Portal`).
81
82
  * @param width Sets the width of the `Overlay`, pick from our set list of widths, or pass `auto` to automatically set the width based on the content of the `Overlay`. `small` corresponds to `256px`, `medium` corresponds to `320px`, `large` corresponds to `480px`, `xlarge` corresponds to `640px`, `xxlarge` corresponds to `960px`.
82
83
 
83
84
  */
84
- const Overlay = /*#__PURE__*/ React.forwardRef(({ anchorSide, _PrivateDisablePortal, height = "auto", ignoreClickRefs, initialFocusRef, left, onClickOutside, onEscape, portalContainerName, preventOverflow = true, preventFocusOnOpen, returnFocusRef, right, role = "none", visibility = "visible", width = "auto", responsiveVariant, ...props }, forwardedRef) => {
85
+ const Overlay = /*#__PURE__*/ React.forwardRef(({ anchorSide, _PrivateDisablePortal, height = "auto", ignoreClickRefs, initialFocusRef, left, onClickOutside, onEscape, portalContainerName, preventOverflow = true, preventFocusOnOpen, preventFocusOnClose, returnFocusRef, right, role = "none", visibility = "visible", width = "auto", responsiveVariant, ...props }, forwardedRef) => {
85
86
  const overlayRef = useRef(null);
86
87
  const mergedOverlayRef = useMergedRefs(forwardedRef, overlayRef);
87
88
  const slideAnimationDistance = 8;
@@ -94,7 +95,8 @@ const Overlay = /*#__PURE__*/ React.forwardRef(({ anchorSide, _PrivateDisablePor
94
95
  ignoreClickRefs,
95
96
  onClickOutside,
96
97
  initialFocusRef,
97
- preventFocusOnOpen
98
+ preventFocusOnOpen,
99
+ preventFocusOnClose
98
100
  });
99
101
  useEffect(() => {
100
102
  var _overlayRef$current;