@ostack.tech/ui 0.6.5 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/chunks/{en-C2peM913.js → en-BfgHKQwn.js} +2 -1
  2. package/dist/chunks/en-BfgHKQwn.js.map +1 -0
  3. package/dist/locales/en-GB.js +1 -1
  4. package/dist/locales/en-US.js +1 -1
  5. package/dist/locales/fr-FR.js +1 -0
  6. package/dist/locales/fr-FR.js.map +1 -1
  7. package/dist/locales/pt-PT.js +1 -0
  8. package/dist/locales/pt-PT.js.map +1 -1
  9. package/dist/ostack-ui.css +15 -12
  10. package/dist/ostack-ui.css.map +1 -1
  11. package/dist/ostack-ui.js +1266 -1086
  12. package/dist/ostack-ui.js.map +1 -1
  13. package/dist/types/components/Alert/Alert.d.ts +1 -1
  14. package/dist/types/components/Alert/AlertTitle.d.ts +7 -3
  15. package/dist/types/components/AlertDialog/AlertDialogTitle.d.ts +7 -2
  16. package/dist/types/components/Button/Button.d.ts +43 -13
  17. package/dist/types/components/Calendar/Calendar.d.ts +2 -2
  18. package/dist/types/components/Card/CardTitle.d.ts +8 -11
  19. package/dist/types/components/Checkbox/Checkbox.d.ts +26 -2
  20. package/dist/types/components/CheckboxGroup/CheckboxGroup.d.ts +29 -2
  21. package/dist/types/components/CheckboxGroup/CheckboxGroupContext.d.ts +4 -0
  22. package/dist/types/components/CloseButton/CloseButton.d.ts +1 -1
  23. package/dist/types/components/CommandMenu/CommandMenuItem.d.ts +1 -1
  24. package/dist/types/components/DataTable/DataTablePagination.d.ts +2 -2
  25. package/dist/types/components/DataTable/DataTableSelectionTrigger.d.ts +1 -1
  26. package/dist/types/components/DateRangeInput/DateRangeInput.d.ts +47 -12
  27. package/dist/types/components/Dialog/DialogTitle.d.ts +7 -2
  28. package/dist/types/components/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -1
  29. package/dist/types/components/DropdownMenu/DropdownMenuItem.d.ts +1 -1
  30. package/dist/types/components/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
  31. package/dist/types/components/ErrorBoundary/ErrorBoundary.d.ts +1 -1
  32. package/dist/types/components/FeedbackPopover/FeedbackPopover.d.ts +1 -1
  33. package/dist/types/components/Field/FieldContext.d.ts +1 -0
  34. package/dist/types/components/FieldGroup/FieldGroupTitle.d.ts +7 -10
  35. package/dist/types/components/Heading/Heading.d.ts +13 -6
  36. package/dist/types/components/IconButton/IconButton.d.ts +44 -12
  37. package/dist/types/components/Input/Input.d.ts +32 -2
  38. package/dist/types/components/Label/Label.d.ts +1 -1
  39. package/dist/types/components/Link/Link.d.ts +8 -3
  40. package/dist/types/components/MenuList/MenuListItem.d.ts +36 -17
  41. package/dist/types/components/Output/Output.d.ts +20 -2
  42. package/dist/types/components/RadioGroup/Radio.d.ts +26 -2
  43. package/dist/types/components/RadioGroup/RadioGroup.d.ts +26 -2
  44. package/dist/types/components/Select/Select.d.ts +2 -2
  45. package/dist/types/components/Table/TableColumn.d.ts +2 -2
  46. package/dist/types/index.d.ts +3 -1
  47. package/dist/types/providers/AlertDialogProvider/AlertDialogProviderContext.d.ts +2 -2
  48. package/dist/types/providers/LocalizationProvider/LocalizationObject.d.ts +1 -1
  49. package/dist/types/utils/combineAriaIds.d.ts +2 -0
  50. package/dist/types/utils/control.d.ts +1 -0
  51. package/dist/types/utils/polymorphicTypes.d.ts +23 -0
  52. package/dist/types/utils/setNativeProperty.d.ts +8 -0
  53. package/package.json +1 -1
  54. package/scss/components/Checkbox/_Checkbox.scss +1 -1
  55. package/scss/components/ControlAddon/_ControlAddon.scss +3 -3
  56. package/scss/components/DropdownMenu/_DropdownMenu.scss +1 -1
  57. package/scss/components/FieldGroup/_FieldGroup-variables.scss +3 -3
  58. package/scss/components/RadioGroup/_Radio.scss +1 -1
  59. package/scss/components/Select/_Select-variables.scss +1 -1
  60. package/scss/components/Select/_Select.scss +1 -1
  61. package/scss/scss/placeholders/checkable/_checkable.scss +3 -3
  62. package/scss/scss/placeholders/control/_control.scss +1 -1
  63. package/scss/scss/placeholders/menu/_menu.scss +8 -3
  64. package/scss/scss/placeholders/popover/_popover.scss +10 -12
  65. package/scss/scss/utils/_breakpoints.scss +4 -5
  66. package/scss/scss/utils/_css-color-functions.scss +10 -6
  67. package/scss/scss/utils/_declare-var.scss +1 -1
  68. package/scss/scss/utils/_maybe-important.scss +1 -1
  69. package/scss/scss/utils/_spacing.scss +10 -5
  70. package/dist/chunks/en-C2peM913.js.map +0 -1
  71. package/dist/types/utils/mergeAriaIds.d.ts +0 -2
  72. package/dist/types/utils/setNativeValue.d.ts +0 -7
package/dist/ostack-ui.js CHANGED
@@ -139,20 +139,18 @@ const CardHeader = forwardRef(
139
139
  );
140
140
  }
141
141
  );
142
- const CardTitle = forwardRef(
143
- function CardTitle2({ asChild, level = 2, className, ...otherProps }, forwardedRef) {
144
- const prefix = usePrefix();
145
- const As = asChild ? Slot : `h${level}`;
146
- return /* @__PURE__ */ jsx(
147
- As,
148
- {
149
- className: cx(prefix("card__title"), className),
150
- ...otherProps,
151
- ref: forwardedRef
152
- }
153
- );
154
- }
155
- );
142
+ const CardTitle = forwardRef(function CardTitle2({ as = "div", asChild, className, ...otherProps }, forwardedRef) {
143
+ const prefix = usePrefix();
144
+ const As = asChild ? Slot : as;
145
+ return /* @__PURE__ */ jsx(
146
+ As,
147
+ {
148
+ className: cx(prefix("card__title"), className),
149
+ ...otherProps,
150
+ ref: forwardedRef
151
+ }
152
+ );
153
+ });
156
154
  const DialogBody = forwardRef(function DialogBody2({ className, ...otherProps }, forwardedRef) {
157
155
  const prefix = usePrefix();
158
156
  return /* @__PURE__ */ jsx(
@@ -883,7 +881,7 @@ function useSetFieldControl(controlId, controlTagName, controlCodeId, controlHas
883
881
  const store = useFieldContext();
884
882
  const generatedId = useId();
885
883
  const actualControlId = controlId ?? prefix(`control-${generatedId}`);
886
- const actualCodeId = controlCodeId ?? prefix(`control-code-${generatedId}`);
884
+ const actualCodeId = controlHasCode ? controlCodeId ?? prefix(`control-code-${generatedId}`) : void 0;
887
885
  useEffect(() => {
888
886
  store?.setState({
889
887
  controlId: actualControlId,
@@ -899,8 +897,9 @@ function useSetFieldControl(controlId, controlTagName, controlCodeId, controlHas
899
897
  });
900
898
  }, [actualControlId, controlTagName, controlHasCode, controlRequired, store]);
901
899
  return {
900
+ generatedId,
902
901
  controlId: actualControlId,
903
- codeId: controlHasCode ? actualCodeId : void 0
902
+ codeId: actualCodeId
904
903
  };
905
904
  }
906
905
  function useSetFieldControlFocused() {
@@ -1331,7 +1330,7 @@ const Spinner = forwardRef(
1331
1330
  ),
1332
1331
  "data-accent": color,
1333
1332
  role: "status",
1334
- "aria-hidden": "true",
1333
+ "aria-hidden": true,
1335
1334
  ref: forwardedRef,
1336
1335
  ...otherProps
1337
1336
  }
@@ -1407,87 +1406,86 @@ const Tooltip = forwardRef(function Tooltip2({
1407
1406
  });
1408
1407
  const TooltipProvider = Tooltip$1.Provider;
1409
1408
  const VisuallyHidden = VisuallyHidden$1.Root;
1410
- const IconButton = forwardRef(
1411
- function IconButton2({
1412
- asChild,
1413
- variant = "solid",
1414
- color = "neutral",
1415
- size = "md",
1416
- circle,
1417
- icon,
1418
- label,
1419
- active,
1420
- disabled,
1421
- loading,
1422
- enabledWhenLoading,
1423
- loadingLabel,
1424
- disableTooltip,
1425
- iconProps,
1426
- spinnerProps,
1427
- tooltipProps,
1428
- type,
1429
- onClick,
1430
- className,
1431
- children,
1432
- ...otherProps
1433
- }, forwardedRef) {
1434
- const prefix = usePrefix();
1435
- const relevantLabel = loading ? loadingLabel ?? label : label;
1436
- const labelEl = relevantLabel && /* @__PURE__ */ jsx(VisuallyHidden, { children: relevantLabel });
1437
- const iconEl = icon && !loading && /* @__PURE__ */ jsx(Slot, { className: cx(prefix("icon-button__icon"), iconProps?.className), children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, fixedWidth: true, ...iconProps }) });
1438
- const spinnerEl = loading && /* @__PURE__ */ jsx(
1439
- Spinner,
1440
- {
1441
- ...spinnerProps,
1442
- className: cx(prefix("icon-button__spinner"), spinnerProps?.className)
1443
- }
1444
- );
1445
- let content = /* @__PURE__ */ jsxs(Fragment, { children: [
1446
- spinnerEl,
1447
- iconEl,
1448
- labelEl
1449
- ] });
1450
- if (asChild) {
1451
- content = cloneElement(children, void 0, content);
1409
+ const IconButton = forwardRef(function IconButton2({
1410
+ as = "button",
1411
+ asChild,
1412
+ variant = "solid",
1413
+ color = "neutral",
1414
+ size = "md",
1415
+ circle,
1416
+ icon,
1417
+ label,
1418
+ active,
1419
+ disabled,
1420
+ loading,
1421
+ loadingLabel,
1422
+ showSpinner = loading,
1423
+ disableTooltip,
1424
+ iconProps,
1425
+ spinnerProps,
1426
+ tooltipProps,
1427
+ type,
1428
+ onClick,
1429
+ className,
1430
+ children,
1431
+ ...otherProps
1432
+ }, forwardedRef) {
1433
+ const prefix = usePrefix();
1434
+ const relevantLabel = loading ? loadingLabel || label : label;
1435
+ const labelEl = relevantLabel && /* @__PURE__ */ jsx(VisuallyHidden, { children: relevantLabel });
1436
+ const iconEl = icon && !showSpinner && /* @__PURE__ */ jsx(Slot, { className: cx(prefix("icon-button__icon"), iconProps?.className), children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, fixedWidth: true, ...iconProps }) });
1437
+ const spinnerEl = showSpinner && /* @__PURE__ */ jsx(
1438
+ Spinner,
1439
+ {
1440
+ ...spinnerProps,
1441
+ className: cx(prefix("icon-button__spinner"), spinnerProps?.className)
1452
1442
  }
1453
- const loadingDisabled = loading && !enabledWhenLoading;
1454
- const visiblyDisabled = disabled || loadingDisabled;
1455
- const handleClick = useCallback(
1456
- (evt) => {
1457
- if (visiblyDisabled) {
1458
- return evt.preventDefault();
1459
- }
1460
- return onClick?.(evt);
1461
- },
1462
- [onClick, visiblyDisabled]
1463
- );
1464
- const As = asChild ? Slot : "button";
1465
- const button = /* @__PURE__ */ jsx(
1466
- As,
1467
- {
1468
- type: !asChild && !type ? "button" : type,
1469
- className: cx(
1470
- prefix("icon-button"),
1471
- prefix(`icon-button--${variant}`),
1472
- prefix(`icon-button--${size}`),
1473
- circle && prefix("icon-button--circle"),
1474
- className
1475
- ),
1476
- onClick: handleClick,
1477
- "data-accent": color,
1478
- disabled,
1479
- "data-disabled": boolDataAttr(loadingDisabled || asChild && disabled),
1480
- "aria-disabled": loadingDisabled || asChild && disabled ? "true" : void 0,
1481
- "data-active": boolDataAttr(active),
1482
- tabIndex: asChild && disabled ? -1 : void 0,
1483
- ref: forwardedRef,
1484
- ...otherProps,
1485
- children: content
1486
- }
1487
- );
1488
- return relevantLabel && !disableTooltip ? /* @__PURE__ */ jsx(Tooltip, { ...tooltipProps, content: relevantLabel, children: button }) : button;
1443
+ );
1444
+ let content = /* @__PURE__ */ jsxs(Fragment, { children: [
1445
+ spinnerEl,
1446
+ iconEl,
1447
+ labelEl
1448
+ ] });
1449
+ if (asChild) {
1450
+ content = cloneElement(children, void 0, content);
1489
1451
  }
1490
- );
1452
+ const handleClick = useCallback(
1453
+ (evt) => {
1454
+ if (disabled || loading) {
1455
+ evt.preventDefault();
1456
+ return;
1457
+ }
1458
+ onClick?.(evt);
1459
+ },
1460
+ [disabled, loading, onClick]
1461
+ );
1462
+ const isButton = as === "button" && !asChild;
1463
+ const As = asChild ? Slot : as;
1464
+ const button = /* @__PURE__ */ jsx(
1465
+ As,
1466
+ {
1467
+ type: type ?? (isButton ? "button" : void 0),
1468
+ className: cx(
1469
+ prefix("icon-button"),
1470
+ prefix(`icon-button--${variant}`),
1471
+ prefix(`icon-button--${size}`),
1472
+ circle && prefix("icon-button--circle"),
1473
+ className
1474
+ ),
1475
+ onClick: handleClick,
1476
+ "data-accent": color,
1477
+ disabled,
1478
+ "data-disabled": boolDataAttr(loading || !isButton && disabled),
1479
+ "aria-disabled": loading || !isButton && disabled || void 0,
1480
+ "data-active": boolDataAttr(active),
1481
+ tabIndex: !isButton && disabled ? -1 : void 0,
1482
+ ref: forwardedRef,
1483
+ ...otherProps,
1484
+ children: content
1485
+ }
1486
+ );
1487
+ return relevantLabel && !disableTooltip ? /* @__PURE__ */ jsx(Tooltip, { ...tooltipProps, content: relevantLabel, children: button }) : button;
1488
+ });
1491
1489
  const CloseButton = forwardRef(
1492
1490
  function CloseIconButton({ icon, label, disableTooltip = true, className, ...otherProps }, forwardedRef) {
1493
1491
  const prefix = usePrefix();
@@ -1555,14 +1553,20 @@ const DialogHeader = forwardRef(function DialogHeader2({
1555
1553
  }
1556
1554
  );
1557
1555
  });
1558
- const DialogTitle = forwardRef(function DialogTitle2({ className, ...otherProps }, forwardedRef) {
1556
+ const DialogTitle = forwardRef(function DialogTitle2({
1557
+ as = "h2",
1558
+ asChild,
1559
+ className,
1560
+ ...otherProps
1561
+ }, forwardedRef) {
1559
1562
  const prefix = usePrefix();
1560
- return /* @__PURE__ */ jsx(CardTitle, { asChild: true, children: /* @__PURE__ */ jsx(
1561
- Dialog$1.Title,
1563
+ const As = asChild ? Slot : as;
1564
+ return /* @__PURE__ */ jsx(Dialog$1.Title, { asChild: true, children: /* @__PURE__ */ jsx(
1565
+ As,
1562
1566
  {
1563
1567
  className: cx(prefix("dialog__title"), className),
1564
- ref: forwardedRef,
1565
- ...otherProps
1568
+ ...otherProps,
1569
+ ref: forwardedRef
1566
1570
  }
1567
1571
  ) });
1568
1572
  });
@@ -1652,109 +1656,114 @@ const AlertDialogHeader = forwardRef(function AlertDialogHeader2({ className, ..
1652
1656
  }
1653
1657
  );
1654
1658
  });
1655
- const AlertDialogTitle = forwardRef(function AlertDialogTitle2({ className, ...otherProps }, forwardedRef) {
1659
+ const AlertDialogTitle = forwardRef(function AlertDialogTitle2({
1660
+ as = "h2",
1661
+ asChild,
1662
+ className,
1663
+ ...otherProps
1664
+ }, forwardedRef) {
1656
1665
  const prefix = usePrefix();
1657
- return /* @__PURE__ */ jsx(CardTitle, { asChild: true, children: /* @__PURE__ */ jsx(
1658
- AlertDialog$1.Title,
1666
+ const As = asChild ? Slot : as;
1667
+ return /* @__PURE__ */ jsx(AlertDialog$1.Title, { asChild: true, children: /* @__PURE__ */ jsx(
1668
+ As,
1659
1669
  {
1660
1670
  className: cx(prefix("dialog__title"), className),
1661
- ref: forwardedRef,
1662
- ...otherProps
1671
+ ...otherProps,
1672
+ ref: forwardedRef
1663
1673
  }
1664
1674
  ) });
1665
1675
  });
1666
1676
  const AlertDialogTrigger = forwardRef(function AlertDialogTrigger2(props, forwardedRef) {
1667
1677
  return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, { ...props, asChild: true, ref: forwardedRef });
1668
1678
  });
1669
- const Button = forwardRef(
1670
- function Button2({
1671
- asChild,
1672
- variant = "solid",
1673
- color = "neutral",
1674
- size = "md",
1675
- vertical,
1676
- icon = null,
1677
- iconPlacement = "start",
1678
- active,
1679
- disabled,
1680
- loading,
1681
- enabledWhenLoading,
1682
- loadingContent,
1683
- iconProps,
1684
- spinnerProps,
1685
- type,
1686
- onClick,
1687
- className,
1688
- children,
1689
- ...otherProps
1690
- }, forwardedRef) {
1691
- const prefix = usePrefix();
1692
- const iconEl = icon && !loading && /* @__PURE__ */ jsx(
1693
- Slot,
1694
- {
1695
- className: cx(
1696
- prefix("button__icon"),
1697
- prefix(`button__icon--${iconPlacement}`),
1698
- iconProps?.className
1699
- ),
1700
- children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, ...iconProps })
1701
- }
1702
- );
1703
- const spinnerEl = loading && /* @__PURE__ */ jsx(
1704
- Spinner,
1705
- {
1706
- ...spinnerProps,
1707
- className: cx(
1708
- prefix("button__spinner"),
1709
- prefix(`button__spinner--${iconPlacement}`),
1710
- spinnerProps?.className
1711
- )
1712
- }
1713
- );
1714
- const content = loading && loadingContent ? asChild ? cloneElement(children, void 0, loadingContent) : loadingContent : children;
1715
- const loadingDisabled = loading && !enabledWhenLoading;
1716
- const visiblyDisabled = disabled || loadingDisabled;
1717
- const handleClick = useCallback(
1718
- (evt) => {
1719
- if (visiblyDisabled) {
1720
- return evt.preventDefault();
1721
- }
1722
- return onClick?.(evt);
1723
- },
1724
- [onClick, visiblyDisabled]
1725
- );
1726
- const As = asChild ? Slot : "button";
1727
- return /* @__PURE__ */ jsxs(
1728
- As,
1729
- {
1730
- type: !asChild && !type ? "button" : type,
1731
- className: cx(
1732
- prefix("button"),
1733
- prefix(`button--${variant}`),
1734
- prefix(`button--${size}`),
1735
- vertical && prefix("button--vertical"),
1736
- className
1737
- ),
1738
- onClick: handleClick,
1739
- "data-accent": color,
1740
- disabled,
1741
- "data-disabled": boolDataAttr(loadingDisabled || asChild && disabled),
1742
- "aria-disabled": loadingDisabled || asChild && disabled ? "true" : void 0,
1743
- "data-active": boolDataAttr(active),
1744
- tabIndex: asChild && disabled ? -1 : void 0,
1745
- ref: forwardedRef,
1746
- ...otherProps,
1747
- children: [
1748
- iconPlacement === "start" && spinnerEl,
1749
- iconPlacement === "start" && iconEl,
1750
- /* @__PURE__ */ jsx(Slottable, { children: content }),
1751
- iconPlacement === "end" && iconEl,
1752
- iconPlacement === "end" && spinnerEl
1753
- ]
1679
+ const Button = forwardRef(function Button2({
1680
+ as = "button",
1681
+ asChild,
1682
+ variant = "solid",
1683
+ color = "neutral",
1684
+ size = "md",
1685
+ vertical,
1686
+ icon = null,
1687
+ iconPlacement = "start",
1688
+ active,
1689
+ disabled,
1690
+ loading,
1691
+ loadingContent,
1692
+ showSpinner = loading,
1693
+ iconProps,
1694
+ spinnerProps,
1695
+ type,
1696
+ onClick,
1697
+ className,
1698
+ children,
1699
+ ...otherProps
1700
+ }, forwardedRef) {
1701
+ const prefix = usePrefix();
1702
+ const iconEl = icon && !showSpinner && /* @__PURE__ */ jsx(
1703
+ Slot,
1704
+ {
1705
+ className: cx(
1706
+ prefix("button__icon"),
1707
+ prefix(`button__icon--${iconPlacement}`),
1708
+ iconProps?.className
1709
+ ),
1710
+ children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, ...iconProps })
1711
+ }
1712
+ );
1713
+ const spinnerEl = showSpinner && /* @__PURE__ */ jsx(
1714
+ Spinner,
1715
+ {
1716
+ ...spinnerProps,
1717
+ className: cx(
1718
+ prefix("button__spinner"),
1719
+ prefix(`button__spinner--${iconPlacement}`),
1720
+ spinnerProps?.className
1721
+ )
1722
+ }
1723
+ );
1724
+ const content = loading && loadingContent ? asChild ? cloneElement(children, void 0, loadingContent) : loadingContent : children;
1725
+ const handleClick = useCallback(
1726
+ (evt) => {
1727
+ if (disabled || loading) {
1728
+ evt.preventDefault();
1729
+ return;
1754
1730
  }
1755
- );
1756
- }
1757
- );
1731
+ onClick?.(evt);
1732
+ },
1733
+ [disabled, loading, onClick]
1734
+ );
1735
+ const isButton = as === "button" && !asChild;
1736
+ const As = asChild ? Slot : as;
1737
+ return /* @__PURE__ */ jsxs(
1738
+ As,
1739
+ {
1740
+ type: type ?? (isButton ? "button" : void 0),
1741
+ className: cx(
1742
+ prefix("button"),
1743
+ prefix(`button--${variant}`),
1744
+ prefix(`button--${size}`),
1745
+ vertical && prefix("button--vertical"),
1746
+ className
1747
+ ),
1748
+ onClick: handleClick,
1749
+ "data-accent": color,
1750
+ disabled,
1751
+ "data-disabled": boolDataAttr(loading || !isButton && disabled),
1752
+ "aria-disabled": loading || !isButton && disabled || void 0,
1753
+ "data-active": boolDataAttr(active),
1754
+ tabIndex: !isButton && disabled ? -1 : void 0,
1755
+ ref: forwardedRef,
1756
+ ...otherProps,
1757
+ children: [
1758
+ iconPlacement === "start" && spinnerEl,
1759
+ iconPlacement === "start" && iconEl,
1760
+ /* @__PURE__ */ jsx(Slottable, { children: content }),
1761
+ iconPlacement === "end" && iconEl,
1762
+ iconPlacement === "end" && spinnerEl
1763
+ ]
1764
+ }
1765
+ );
1766
+ });
1758
1767
  const AlertDialogProviderContext = createContext(void 0);
1759
1768
  function AlertDialogProvider({ children }) {
1760
1769
  const [locale7] = useLocale();
@@ -2530,20 +2539,23 @@ const Alert = forwardRef(function Alert2({
2530
2539
  }
2531
2540
  );
2532
2541
  });
2533
- const AlertTitle = forwardRef(
2534
- function AlertTitle2({ asChild, className, ...otherProps }, forwardedRef) {
2535
- const prefix = usePrefix();
2536
- const As = asChild ? Slot : "div";
2537
- return /* @__PURE__ */ jsx(
2538
- As,
2539
- {
2540
- className: cx(prefix("alert__title"), className),
2541
- ...otherProps,
2542
- ref: forwardedRef
2543
- }
2544
- );
2545
- }
2546
- );
2542
+ const AlertTitle = forwardRef(function AlertTitle2({
2543
+ as = "div",
2544
+ asChild,
2545
+ className,
2546
+ ...otherProps
2547
+ }, forwardedRef) {
2548
+ const prefix = usePrefix();
2549
+ const As = asChild ? Slot : as;
2550
+ return /* @__PURE__ */ jsx(
2551
+ As,
2552
+ {
2553
+ className: cx(prefix("alert__title"), className),
2554
+ ...otherProps,
2555
+ ref: forwardedRef
2556
+ }
2557
+ );
2558
+ });
2547
2559
  const Code = forwardRef(function Code2({ asChild, color = "neutral", className, ...otherProps }, forwardedRef) {
2548
2560
  const prefix = usePrefix();
2549
2561
  const As = asChild ? Slot : "code";
@@ -2858,7 +2870,9 @@ const ControlAddon = forwardRef(
2858
2870
  className: cx(prefix("control-addon"), className),
2859
2871
  "data-variant": controlContext?.variant ?? variant,
2860
2872
  "data-status": controlContext?.status ?? status,
2861
- "data-muted": boolDataAttr(controlContext?.disabled || muted),
2873
+ "data-muted": boolDataAttr(
2874
+ controlContext?.disabled || controlContext?.loading || muted
2875
+ ),
2862
2876
  "data-readonly": boolDataAttr(controlContext?.readOnly || readOnly),
2863
2877
  ref: forwardedRef,
2864
2878
  ...otherProps
@@ -2866,34 +2880,34 @@ const ControlAddon = forwardRef(
2866
2880
  ) });
2867
2881
  }
2868
2882
  );
2869
- function mergeAriaIds(...args) {
2883
+ function combineAriaIds(...args) {
2870
2884
  const ids = [];
2871
2885
  for (const arg of args) {
2872
- if (!arg) {
2873
- continue;
2874
- }
2875
2886
  if (Array.isArray(arg)) {
2876
- const innerIds = mergeAriaIds(...arg);
2887
+ const innerIds = combineAriaIds(...arg);
2877
2888
  if (innerIds) {
2878
2889
  args.push(innerIds);
2879
2890
  }
2880
- } else {
2891
+ } else if (arg) {
2881
2892
  ids.push(String(arg));
2882
2893
  }
2883
2894
  }
2884
2895
  return ids.join(" ") || void 0;
2885
2896
  }
2886
- function setNativeValue(element, value) {
2887
- const { set: valueSetter } = Object.getOwnPropertyDescriptor(element, "value") ?? {};
2888
- const prototype = Object.getPrototypeOf(element);
2889
- const { set: prototypeValueSetter } = Object.getOwnPropertyDescriptor(prototype, "value") ?? {};
2890
- if (prototypeValueSetter && valueSetter !== prototypeValueSetter) {
2891
- prototypeValueSetter.call(element, value);
2892
- } else if (valueSetter) {
2893
- valueSetter.call(element, value);
2894
- } else {
2895
- throw new Error("The given element does not have a value setter.");
2897
+ function setNativeProperty(element, prop, value) {
2898
+ for (let proto = Object.getPrototypeOf(element); proto !== null; proto = Object.getPrototypeOf(proto)) {
2899
+ const protoSetter = Object.getOwnPropertyDescriptor(proto, prop)?.set;
2900
+ if (protoSetter) {
2901
+ protoSetter.call(element, value);
2902
+ return;
2903
+ }
2904
+ }
2905
+ const ownSetter = Object.getOwnPropertyDescriptor(element, prop)?.set;
2906
+ if (ownSetter) {
2907
+ ownSetter.call(element, value);
2908
+ return;
2896
2909
  }
2910
+ throw new Error(`The given element does not have a "${prop}" setter.`);
2897
2911
  }
2898
2912
  function camelToKebabCase(str) {
2899
2913
  return str.replace(/[A-Z]/g, (l) => `-${l.toLowerCase()}`);
@@ -3429,11 +3443,11 @@ const Table = forwardRef(
3429
3443
  className
3430
3444
  ),
3431
3445
  "data-status": status,
3432
- "aria-describedby": mergeAriaIds(
3446
+ "aria-describedby": combineAriaIds(
3433
3447
  codeId,
3434
- descriptionIds,
3435
3448
  errorMessageIds,
3436
- ariaDescribedBy
3449
+ ariaDescribedBy,
3450
+ descriptionIds
3437
3451
  ),
3438
3452
  ...otherProps,
3439
3453
  ref: combinedTableRef,
@@ -3693,7 +3707,7 @@ const TableRow = forwardRef(
3693
3707
  {
3694
3708
  className: cx(prefix("table__row"), className),
3695
3709
  "data-selected": boolDataAttr(selected),
3696
- "aria-selected": selected ? "true" : void 0,
3710
+ "aria-selected": selected || void 0,
3697
3711
  ...otherProps,
3698
3712
  ref: forwardedRef
3699
3713
  }
@@ -3880,9 +3894,9 @@ const TableHead = forwardRef(
3880
3894
  prefix("table__column-sort-button"),
3881
3895
  sortButtonProps?.className
3882
3896
  ),
3883
- "aria-describedby": mergeAriaIds(
3884
- sortDescriptionId,
3885
- sortButtonProps?.["aria-describedby"]
3897
+ "aria-describedby": combineAriaIds(
3898
+ sortButtonProps?.["aria-describedby"],
3899
+ sortDescriptionId
3886
3900
  ),
3887
3901
  onClick: combineEventHandlers(
3888
3902
  sortButtonProps?.onClick,
@@ -4376,6 +4390,8 @@ const Checkbox = forwardRef(function Checkbox2({
4376
4390
  status,
4377
4391
  code,
4378
4392
  loading,
4393
+ loadingDescription,
4394
+ showSpinner = loading,
4379
4395
  onBlurToOutside,
4380
4396
  children,
4381
4397
  rootProps,
@@ -4396,26 +4412,29 @@ const Checkbox = forwardRef(function Checkbox2({
4396
4412
  required,
4397
4413
  disabled,
4398
4414
  readOnly,
4415
+ "aria-label": ariaLabel,
4399
4416
  "aria-labelledby": ariaLabelledBy,
4400
4417
  "aria-describedby": ariaDescribedBy,
4401
4418
  ...otherProps
4402
4419
  }, forwardedRef) {
4403
4420
  const prefix = usePrefix();
4421
+ const [locale7] = useLocale();
4422
+ loadingDescription ??= locale7.Input.loadingDescription;
4404
4423
  const controlContext = useControlContext();
4405
4424
  const checkboxGroupContext = useContext(CheckboxGroupContext);
4406
4425
  const fieldLabelId = useFieldLabelId();
4407
4426
  const dataTableColumnLabelId = useDataTableColumnLabelId();
4408
4427
  const descriptionIds = useFieldDescriptionIds();
4409
4428
  const errorMessageIds = useFieldErrorMessageIds();
4410
- const { controlId, codeId } = useSetFieldControl(
4429
+ const { generatedId, controlId, codeId } = useSetFieldControl(
4411
4430
  id,
4412
4431
  "BUTTON",
4413
4432
  codeProps?.id,
4414
- !!code,
4433
+ Boolean(code),
4415
4434
  required
4416
4435
  );
4417
- const generatedId = useId();
4418
4436
  const labelId = children && (labelProps?.id ?? prefix(`checkbox-label-${generatedId}`));
4437
+ const loadingDescriptionId = loading && loadingDescription && prefix(`control-loading-${generatedId}`);
4419
4438
  const checkboxRef = useRef(null);
4420
4439
  const containerRef = useRef(null);
4421
4440
  const labelRef = useRef(null);
@@ -4423,6 +4442,7 @@ const Checkbox = forwardRef(function Checkbox2({
4423
4442
  const checkboxVariant = variant ?? (isInTableCell ? "cell" : "default");
4424
4443
  status = controlContext?.status ?? status;
4425
4444
  disabled = controlContext?.disabled || disabled;
4445
+ loading = controlContext?.loading || loading;
4426
4446
  readOnly = controlContext?.readOnly || readOnly;
4427
4447
  const [checked, setChecked] = useControllableState(
4428
4448
  defaultChecked ?? false,
@@ -4431,13 +4451,20 @@ const Checkbox = forwardRef(function Checkbox2({
4431
4451
  const onContextCheckedChange = checkboxGroupContext?.onCheckedChange;
4432
4452
  const handleCheckedChange = useCallback(
4433
4453
  (state) => {
4434
- if (!readOnly) {
4454
+ if (!loading && !readOnly) {
4435
4455
  onCheckedChange?.(state);
4436
4456
  setChecked(state);
4437
4457
  onContextCheckedChange?.(value?.toString() ?? "", state === true);
4438
4458
  }
4439
4459
  },
4440
- [onCheckedChange, onContextCheckedChange, readOnly, setChecked, value]
4460
+ [
4461
+ loading,
4462
+ onCheckedChange,
4463
+ onContextCheckedChange,
4464
+ readOnly,
4465
+ setChecked,
4466
+ value
4467
+ ]
4441
4468
  );
4442
4469
  const setFieldControlFocused = useSetFieldControlFocused();
4443
4470
  const handleFocus = useCallback(() => {
@@ -4461,6 +4488,10 @@ const Checkbox = forwardRef(function Checkbox2({
4461
4488
  void Promise.resolve().then(() => labelEl.tabIndex = -1);
4462
4489
  }
4463
4490
  }, []);
4491
+ const combinedLabelIds = combineAriaIds(
4492
+ codeId,
4493
+ labelId ?? fieldLabelId ?? dataTableColumnLabelId
4494
+ );
4464
4495
  const combinedContainerRef = useCombinedRef(
4465
4496
  containerProps?.ref,
4466
4497
  containerRef
@@ -4478,6 +4509,7 @@ const Checkbox = forwardRef(function Checkbox2({
4478
4509
  ),
4479
4510
  status,
4480
4511
  disabled,
4512
+ loading,
4481
4513
  readOnly
4482
4514
  },
4483
4515
  children: /* @__PURE__ */ jsxs(
@@ -4503,7 +4535,7 @@ const Checkbox = forwardRef(function Checkbox2({
4503
4535
  {
4504
4536
  "data-status": status,
4505
4537
  "data-variant": checkboxVariant,
4506
- "data-disabled": boolDataAttr(disabled),
4538
+ "data-disabled": boolDataAttr(disabled || loading),
4507
4539
  "data-readonly": boolDataAttr(readOnly),
4508
4540
  ...containerProps,
4509
4541
  className: cx(
@@ -4521,30 +4553,31 @@ const Checkbox = forwardRef(function Checkbox2({
4521
4553
  {
4522
4554
  id: controlId,
4523
4555
  className: cx(prefix("checkbox"), className),
4524
- name: name ?? (checkboxGroupContext?.name ? `${checkboxGroupContext.name}[]` : void 0),
4556
+ name: name ?? checkboxGroupContext?.name,
4525
4557
  value,
4526
4558
  checked,
4527
4559
  required,
4528
4560
  disabled,
4561
+ "data-loading": boolDataAttr(loading),
4529
4562
  "data-readonly": boolDataAttr(readOnly),
4530
4563
  "data-status": status,
4531
4564
  "data-variant": checkboxVariant,
4532
4565
  onCheckedChange: handleCheckedChange,
4533
4566
  onFocus: combineEventHandlers(onFocus, handleFocus),
4534
4567
  onBlur: combineEventHandlers(onBlur, handleBlur),
4535
- "aria-readonly": readOnly ? "true" : void 0,
4536
- "aria-labelledby": dataTableColumnLabelId || fieldLabelId || ariaLabelledBy ? mergeAriaIds(
4537
- dataTableColumnLabelId,
4538
- fieldLabelId,
4539
- labelId,
4540
- ariaLabelledBy
4541
- ) : void 0,
4542
- "aria-invalid": status === "invalid" ? "true" : void 0,
4543
- "aria-describedby": mergeAriaIds(
4544
- codeId,
4568
+ "aria-disabled": loading || readOnly || void 0,
4569
+ "aria-label": ariaLabel,
4570
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 && combinedLabelIds !== labelId && combinedLabelIds !== fieldLabelId ? combinedLabelIds : void 0),
4571
+ "aria-invalid": status === "invalid" || void 0,
4572
+ "aria-describedby": combineAriaIds(
4573
+ loadingDescriptionId,
4574
+ checkboxGroupContext?.loadingDescriptionId,
4545
4575
  errorMessageIds,
4576
+ checkboxGroupContext?.errorMessageIds,
4577
+ ariaDescribedBy,
4578
+ checkboxGroupContext?.ariaDescribedBy,
4546
4579
  descriptionIds,
4547
- ariaDescribedBy
4580
+ checkboxGroupContext?.descriptionIds
4548
4581
  ),
4549
4582
  ...otherProps,
4550
4583
  ref: combinedCheckboxRef,
@@ -4561,7 +4594,7 @@ const Checkbox = forwardRef(function Checkbox2({
4561
4594
  ) })
4562
4595
  }
4563
4596
  ),
4564
- children && /* @__PURE__ */ jsx(
4597
+ labelId && /* @__PURE__ */ jsx(
4565
4598
  Label,
4566
4599
  {
4567
4600
  htmlFor: controlId,
@@ -4585,18 +4618,19 @@ const Checkbox = forwardRef(function Checkbox2({
4585
4618
  children
4586
4619
  }
4587
4620
  ),
4588
- loading && /* @__PURE__ */ jsx(
4621
+ showSpinner && /* @__PURE__ */ jsx(
4589
4622
  Spinner,
4590
4623
  {
4591
4624
  color: controlStatusToAccent(status, "neutral"),
4592
- "data-disabled": boolDataAttr(disabled),
4625
+ "data-disabled": boolDataAttr(disabled || loading),
4593
4626
  ...spinnerProps,
4594
4627
  className: cx(
4595
4628
  prefix("checkbox__spinner"),
4596
4629
  spinnerProps?.className
4597
4630
  )
4598
4631
  }
4599
- )
4632
+ ),
4633
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription })
4600
4634
  ]
4601
4635
  }
4602
4636
  )
@@ -5025,7 +5059,7 @@ function ScrolledDataTableRows({
5025
5059
  });
5026
5060
  }, [endIndex, startIndex, store]);
5027
5061
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5028
- /* @__PURE__ */ jsx("tr", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(
5062
+ /* @__PURE__ */ jsx("tr", { "aria-hidden": true, children: /* @__PURE__ */ jsx(
5029
5063
  "td",
5030
5064
  {
5031
5065
  style: {
@@ -5049,7 +5083,7 @@ function ScrolledDataTableRows({
5049
5083
  const key = rowsWindow[i] ? `row-${getRowKey(rowsWindow[i], rowKey)}` : `loading-${i}`;
5050
5084
  return renderRow ? /* @__PURE__ */ jsx(Fragment$1, { children: renderRow(props) }, key) : /* @__PURE__ */ jsx(DataTableRow, { ...props }, key);
5051
5085
  }),
5052
- /* @__PURE__ */ jsx("tr", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(
5086
+ /* @__PURE__ */ jsx("tr", { "aria-hidden": true, children: /* @__PURE__ */ jsx(
5053
5087
  "td",
5054
5088
  {
5055
5089
  style: {
@@ -5559,7 +5593,9 @@ const DataTableSelectionTrigger = forwardRef(function DataTableSelectionTrigger2
5559
5593
  }
5560
5594
  );
5561
5595
  });
5562
- const REQUIRABLE_CONTROLS = ["INPUT", "SELECT", "TEXTAREA"];
5596
+ const REQUIRED_TAGS = ["INPUT", "SELECT", "TEXTAREA"];
5597
+ const READ_ONLY_TAGS = ["INPUT", "TEXTAREA"];
5598
+ const NON_READONLY_INPUT_TYPES = ["file", "color"];
5563
5599
  const Input = forwardRef(
5564
5600
  function Input2({
5565
5601
  asChild,
@@ -5570,6 +5606,8 @@ const Input = forwardRef(
5570
5606
  status,
5571
5607
  code,
5572
5608
  loading,
5609
+ loadingDescription,
5610
+ showSpinner = loading,
5573
5611
  align,
5574
5612
  startAdornment,
5575
5613
  endAdornment,
@@ -5592,26 +5630,31 @@ const Input = forwardRef(
5592
5630
  onFocus,
5593
5631
  onBlur,
5594
5632
  onClick,
5633
+ "aria-label": ariaLabel,
5595
5634
  "aria-labelledby": ariaLabelledBy,
5596
5635
  "aria-describedby": ariaDescribedBy,
5597
5636
  ...otherProps
5598
5637
  }, forwardedRef) {
5599
5638
  const prefix = usePrefix();
5600
5639
  const [locale7] = useLocale();
5640
+ loadingDescription ??= locale7.Input.loadingDescription;
5601
5641
  clearButtonLabel ??= locale7.Input.clearButtonLabel;
5602
5642
  const { responsiveValuesToCssVarsAndDataAttrs } = useResponsiveValues();
5643
+ const labelId = useFieldLabelId();
5603
5644
  const dataTableColumnLabelId = useDataTableColumnLabelId();
5604
5645
  const descriptionIds = useFieldDescriptionIds();
5605
5646
  const errorMessageIds = useFieldErrorMessageIds();
5606
5647
  const { printHidden } = usePrintClassNames();
5607
5648
  const [inputEl, setInputEl] = useState(null);
5608
- const { controlId, codeId } = useSetFieldControl(
5649
+ const tagName = inputEl?.tagName;
5650
+ const { generatedId, controlId, codeId } = useSetFieldControl(
5609
5651
  id,
5610
- inputEl?.tagName,
5652
+ tagName,
5611
5653
  codeProps?.id,
5612
- !!code,
5654
+ Boolean(code),
5613
5655
  required
5614
5656
  );
5657
+ const loadingDescriptionId = loading && loadingDescription && prefix(`control-loading-${generatedId}`);
5615
5658
  const containerRef = useRef(null);
5616
5659
  const clearButtonRef = useRef(null);
5617
5660
  const isInTableCell = useIsInTableCell();
@@ -5657,7 +5700,7 @@ const Input = forwardRef(
5657
5700
  );
5658
5701
  const handleClick = useCallback(
5659
5702
  (evt) => {
5660
- if (readOnly && (type === "file" || type === "color")) {
5703
+ if (readOnly && type && NON_READONLY_INPUT_TYPES.includes(type)) {
5661
5704
  evt.preventDefault();
5662
5705
  }
5663
5706
  },
@@ -5671,32 +5714,42 @@ const Input = forwardRef(
5671
5714
  requestAnimationFrame(() => {
5672
5715
  try {
5673
5716
  inputEl.setSelectionRange(cursorIdx, cursorIdx);
5674
- } finally {
5675
- inputEl.focus();
5717
+ } catch {
5676
5718
  }
5719
+ inputEl.focus();
5677
5720
  });
5678
5721
  }
5679
5722
  },
5680
5723
  [disabled, inputEl, prefix]
5681
5724
  );
5682
5725
  const handleClearButtonClick = useCallback(() => {
5683
- if (inputEl) {
5684
- setNativeValue(inputEl, "");
5685
- const changeEvent = new Event("input", { bubbles: true });
5686
- inputEl.dispatchEvent(changeEvent);
5687
- if (!changeEvent.defaultPrevented) {
5688
- onValueChange?.("");
5726
+ if (inputEl && inputEl.value !== "") {
5727
+ setNativeProperty(inputEl, "value", "");
5728
+ const event = new Event(inputEl.type === "file" ? "change" : "input", {
5729
+ bubbles: true,
5730
+ cancelable: true
5731
+ });
5732
+ inputEl.dispatchEvent(event);
5733
+ if (!event.defaultPrevented) {
5689
5734
  inputEl.focus();
5690
5735
  }
5691
5736
  }
5692
- }, [inputEl, onValueChange]);
5693
- const hasClearButton = !disabled && !readOnly && (showClearButton === true || showClearButton === "auto" && (isControlled ? (value?.toString() ?? "")?.length > 0 : shouldShowClearButton));
5737
+ }, [inputEl]);
5738
+ const hasClearButton = !disabled && !loading && !readOnly && (showClearButton === true || showClearButton === "auto" && (isControlled ? (value?.toString() ?? "")?.length > 0 : shouldShowClearButton));
5694
5739
  const { cssVars, dataAttrs } = responsiveValuesToCssVarsAndDataAttrs(
5695
5740
  "control",
5696
5741
  { align }
5697
5742
  );
5698
- const requirable = inputEl && REQUIRABLE_CONTROLS.includes(inputEl.tagName);
5699
- const As = asChild ? Slot : "input";
5743
+ const supportsRequired = Boolean(
5744
+ tagName && REQUIRED_TAGS.includes(tagName)
5745
+ );
5746
+ const supportsReadOnly = Boolean(
5747
+ tagName && READ_ONLY_TAGS.includes(tagName) && (!type || !NON_READONLY_INPUT_TYPES.includes(type))
5748
+ );
5749
+ const combinedLabelIds = combineAriaIds(
5750
+ codeId,
5751
+ labelId ?? dataTableColumnLabelId
5752
+ );
5700
5753
  const combinedContainerRef = useCombinedRef(
5701
5754
  containerRef,
5702
5755
  containerProps?.ref
@@ -5706,144 +5759,140 @@ const Input = forwardRef(
5706
5759
  clearButtonRef,
5707
5760
  clearButtonProps?.ref
5708
5761
  );
5709
- return /* @__PURE__ */ jsx(ClearContexts, { field: false, children: /* @__PURE__ */ jsx(
5710
- ControlContext.Provider,
5711
- {
5712
- value: { variant, status, disabled, readOnly },
5713
- children: /* @__PURE__ */ jsxs(
5714
- "div",
5715
- {
5716
- "data-status": status,
5717
- "data-accent": controlStatusToAccent(status),
5718
- "data-variant": variant,
5719
- "data-disabled": boolDataAttr(disabled),
5720
- "data-readonly": boolDataAttr(readOnly),
5721
- ...rootProps,
5722
- className: cx(prefix("input__root"), rootProps?.className),
5723
- children: [
5724
- code && /* @__PURE__ */ jsx(
5725
- ControlCode,
5726
- {
5727
- ...codeProps,
5728
- id: codeId,
5729
- className: cx(prefix("input__code"), codeProps?.className),
5730
- children: code
5731
- }
5732
- ),
5733
- /* @__PURE__ */ jsxs(
5734
- "div",
5735
- {
5736
- "data-status": status,
5737
- "data-accent": controlStatusToAccent(status),
5738
- "data-variant": variant,
5739
- "data-disabled": boolDataAttr(disabled),
5740
- "data-readonly": boolDataAttr(readOnly),
5741
- ...containerProps,
5742
- className: cx(
5743
- prefix("input__container"),
5744
- containerProps?.className
5745
- ),
5746
- onPointerDown: combineEventHandlers(
5747
- containerProps?.onPointerDown,
5748
- handleContainerPointerDown,
5749
- { checkDefaultPrevented: true }
5750
- ),
5751
- ref: combinedContainerRef,
5752
- children: [
5753
- startAdornment,
5754
- /* @__PURE__ */ jsx(
5755
- As,
5756
- {
5757
- type,
5758
- defaultValue,
5759
- value,
5760
- id: controlId,
5761
- className: cx(prefix("input"), className),
5762
- required,
5763
- disabled,
5764
- readOnly,
5765
- onInput: combineEventHandlers(onChange, handleChange, {
5766
- checkDefaultPrevented: true
5767
- }),
5768
- onFocus: combineEventHandlers(onFocus, handleControlFocus, {
5769
- checkDefaultPrevented: true
5770
- }),
5771
- onBlur: combineEventHandlers(onBlur, handleControlBlur, {
5772
- checkDefaultPrevented: true
5773
- }),
5774
- onClick: combineEventHandlers(onClick, handleClick, {
5775
- checkDefaultPrevented: true
5776
- }),
5777
- style: { ...cssVars, ...style },
5778
- ...dataAttrs,
5779
- "data-status": status,
5780
- "data-accent": controlStatusToAccent(status),
5781
- "data-variant": variant,
5782
- "aria-required": required && !requirable ? "true" : void 0,
5783
- "aria-invalid": status === "invalid" ? "true" : void 0,
5784
- "aria-labelledby": mergeAriaIds(
5785
- dataTableColumnLabelId,
5786
- ariaLabelledBy
5787
- ),
5788
- "aria-describedby": mergeAriaIds(
5789
- code && codeId,
5790
- errorMessageIds,
5791
- descriptionIds,
5792
- ariaDescribedBy
5793
- ),
5794
- ...otherProps,
5795
- ref: combinedInputRef
5796
- }
5797
- ),
5798
- hasClearButton && /* @__PURE__ */ jsx(
5799
- CloseButton,
5800
- {
5801
- size: "sm",
5802
- label: clearButtonLabel,
5803
- tabIndex: -1,
5804
- ...clearButtonProps,
5805
- className: cx(
5806
- prefix("input__clear-button"),
5807
- printHidden,
5808
- clearButtonProps?.className
5809
- ),
5810
- onClick: combineEventHandlers(
5811
- clearButtonProps?.onClick,
5812
- handleClearButtonClick,
5813
- { checkDefaultPrevented: true }
5814
- ),
5815
- onFocus: combineEventHandlers(
5816
- clearButtonProps?.onFocus,
5817
- handleControlFocus
5818
- ),
5819
- onBlur: combineEventHandlers(
5820
- clearButtonProps?.onBlur,
5821
- handleControlBlur
5822
- ),
5823
- ref: combinedClearButtonRef
5824
- }
5762
+ const As = asChild ? Slot : "input";
5763
+ return /* @__PURE__ */ jsxs(ClearContexts, { field: false, children: [
5764
+ /* @__PURE__ */ jsx(
5765
+ ControlContext.Provider,
5766
+ {
5767
+ value: { variant, status, disabled, loading, readOnly },
5768
+ children: /* @__PURE__ */ jsxs(
5769
+ "div",
5770
+ {
5771
+ "data-status": status,
5772
+ "data-accent": controlStatusToAccent(status),
5773
+ "data-variant": variant,
5774
+ "data-disabled": boolDataAttr(disabled || loading),
5775
+ "data-readonly": boolDataAttr(readOnly),
5776
+ ...rootProps,
5777
+ className: cx(prefix("input__root"), rootProps?.className),
5778
+ children: [
5779
+ codeId && /* @__PURE__ */ jsx(
5780
+ ControlCode,
5781
+ {
5782
+ ...codeProps,
5783
+ id: codeId,
5784
+ className: cx(prefix("input__code"), codeProps?.className),
5785
+ children: code
5786
+ }
5787
+ ),
5788
+ /* @__PURE__ */ jsxs(
5789
+ "div",
5790
+ {
5791
+ "data-status": status,
5792
+ "data-accent": controlStatusToAccent(status),
5793
+ "data-variant": variant,
5794
+ "data-disabled": boolDataAttr(disabled || loading),
5795
+ "data-readonly": boolDataAttr(readOnly),
5796
+ ...containerProps,
5797
+ className: cx(
5798
+ prefix("input__container"),
5799
+ containerProps?.className
5825
5800
  ),
5826
- loading && /* @__PURE__ */ jsx(
5827
- Spinner,
5828
- {
5829
- color: controlStatusToAccent(status, "neutral"),
5830
- "data-disabled": boolDataAttr(disabled),
5831
- ...spinnerProps,
5832
- className: cx(
5833
- prefix("input__spinner"),
5834
- spinnerProps?.className
5835
- )
5836
- }
5801
+ onPointerDown: combineEventHandlers(
5802
+ containerProps?.onPointerDown,
5803
+ handleContainerPointerDown,
5804
+ { checkDefaultPrevented: true }
5837
5805
  ),
5838
- endAdornment
5839
- ]
5840
- }
5841
- )
5842
- ]
5843
- }
5844
- )
5845
- }
5846
- ) });
5806
+ ref: combinedContainerRef,
5807
+ children: [
5808
+ startAdornment,
5809
+ /* @__PURE__ */ jsx(
5810
+ As,
5811
+ {
5812
+ type,
5813
+ defaultValue,
5814
+ value,
5815
+ id: controlId,
5816
+ className: cx(prefix("input"), className),
5817
+ required: required && supportsRequired,
5818
+ disabled,
5819
+ readOnly: (readOnly || loading) && supportsReadOnly,
5820
+ onChange: combineEventHandlers(onChange, handleChange),
5821
+ onFocus: combineEventHandlers(onFocus, handleControlFocus),
5822
+ onBlur: combineEventHandlers(onBlur, handleControlBlur),
5823
+ onClick: combineEventHandlers(onClick, handleClick),
5824
+ style: { ...cssVars, ...style },
5825
+ ...dataAttrs,
5826
+ "data-loading": loading,
5827
+ "data-status": status,
5828
+ "data-accent": controlStatusToAccent(status),
5829
+ "data-variant": variant,
5830
+ "aria-disabled": (readOnly || loading) && !supportsReadOnly || void 0,
5831
+ "aria-required": required && !supportsRequired || void 0,
5832
+ "aria-invalid": status === "invalid" || void 0,
5833
+ "aria-label": ariaLabel,
5834
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 && combinedLabelIds !== labelId ? combinedLabelIds : void 0),
5835
+ "aria-describedby": combineAriaIds(
5836
+ loadingDescriptionId,
5837
+ errorMessageIds,
5838
+ ariaDescribedBy,
5839
+ descriptionIds
5840
+ ),
5841
+ ...otherProps,
5842
+ ref: combinedInputRef
5843
+ }
5844
+ ),
5845
+ hasClearButton && /* @__PURE__ */ jsx(
5846
+ CloseButton,
5847
+ {
5848
+ size: "sm",
5849
+ label: clearButtonLabel,
5850
+ tabIndex: -1,
5851
+ ...clearButtonProps,
5852
+ className: cx(
5853
+ prefix("input__clear-button"),
5854
+ printHidden,
5855
+ clearButtonProps?.className
5856
+ ),
5857
+ onClick: combineEventHandlers(
5858
+ clearButtonProps?.onClick,
5859
+ handleClearButtonClick,
5860
+ { checkDefaultPrevented: true }
5861
+ ),
5862
+ onFocus: combineEventHandlers(
5863
+ clearButtonProps?.onFocus,
5864
+ handleControlFocus
5865
+ ),
5866
+ onBlur: combineEventHandlers(
5867
+ clearButtonProps?.onBlur,
5868
+ handleControlBlur
5869
+ ),
5870
+ ref: combinedClearButtonRef
5871
+ }
5872
+ ),
5873
+ showSpinner && /* @__PURE__ */ jsx(
5874
+ Spinner,
5875
+ {
5876
+ color: controlStatusToAccent(status, "neutral"),
5877
+ "data-disabled": boolDataAttr(disabled || loading),
5878
+ ...spinnerProps,
5879
+ className: cx(
5880
+ prefix("input__spinner"),
5881
+ spinnerProps?.className
5882
+ )
5883
+ }
5884
+ ),
5885
+ endAdornment
5886
+ ]
5887
+ }
5888
+ )
5889
+ ]
5890
+ }
5891
+ )
5892
+ }
5893
+ ),
5894
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription })
5895
+ ] });
5847
5896
  }
5848
5897
  );
5849
5898
  const InputWithContainerRef = forwardRef(function InputWithContainerRef2({ inputRef, containerProps, ...otherProps }, forwardedRef) {
@@ -5948,8 +5997,8 @@ const MenuListItem = forwardRef(
5948
5997
  color,
5949
5998
  disabled,
5950
5999
  loading,
5951
- enabledWhenLoading,
5952
6000
  loadingContent,
6001
+ showSpinner = loading,
5953
6002
  icon = null,
5954
6003
  iconPlacement,
5955
6004
  href,
@@ -5968,59 +6017,56 @@ const MenuListItem = forwardRef(
5968
6017
  const variant = menuListContext.variant;
5969
6018
  iconPlacement ??= menuListContext.iconPlacement;
5970
6019
  const handleSelect = useCallback(
5971
- (event) => {
5972
- if (!disabled) {
5973
- onSelect?.(event);
6020
+ (evt) => {
6021
+ if (disabled || loading) {
6022
+ evt.preventDefault();
6023
+ return;
5974
6024
  }
6025
+ onSelect?.(evt);
5975
6026
  },
5976
- [disabled, onSelect]
6027
+ [disabled, loading, onSelect]
5977
6028
  );
5978
- const iconEl = useMemo(
5979
- () => icon && /* @__PURE__ */ jsx(
5980
- Slot,
5981
- {
5982
- className: cx(
5983
- prefix("menu-list__item-icon"),
5984
- prefix(`menu-list__item-icon--${iconPlacement}`),
5985
- iconProps?.className
5986
- ),
5987
- children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, ...iconProps })
5988
- }
5989
- ),
5990
- [icon, iconPlacement, iconProps, prefix]
6029
+ const iconEl = icon && !showSpinner && /* @__PURE__ */ jsx(
6030
+ Slot,
6031
+ {
6032
+ className: cx(
6033
+ prefix("menu-list__item-icon"),
6034
+ prefix(`menu-list__item-icon--${iconPlacement}`),
6035
+ iconProps?.className
6036
+ ),
6037
+ children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(Icon, { icon, ...iconProps })
6038
+ }
5991
6039
  );
5992
- const spinnerEl = useMemo(
5993
- () => /* @__PURE__ */ jsx(
5994
- Spinner,
5995
- {
5996
- ...spinnerProps,
5997
- className: cx(
5998
- prefix("menu-list__item-spinner"),
5999
- prefix(`menu-list__item-spinner--${iconPlacement}`),
6000
- spinnerProps?.className
6001
- )
6002
- }
6003
- ),
6004
- [iconPlacement, prefix, spinnerProps]
6040
+ const spinnerEl = showSpinner && /* @__PURE__ */ jsx(
6041
+ Spinner,
6042
+ {
6043
+ ...spinnerProps,
6044
+ className: cx(
6045
+ prefix("menu-list__item-spinner"),
6046
+ prefix(`menu-list__item-spinner--${iconPlacement}`),
6047
+ spinnerProps?.className
6048
+ )
6049
+ }
6005
6050
  );
6006
- const shouldDisable = disabled || loading && !enabledWhenLoading;
6007
6051
  const Action = type === "button" ? "button" : type === "link" ? "a" : "div";
6008
6052
  const actionEl = /* @__PURE__ */ jsxs(
6009
6053
  Action,
6010
6054
  {
6011
6055
  type: type === "button" ? "button" : void 0,
6012
- disabled: type === "button" ? shouldDisable : void 0,
6013
- "data-disabled": boolDataAttr(type !== "button" && shouldDisable),
6014
- "aria-disabled": type !== "button" && shouldDisable ? "true" : void 0,
6056
+ disabled: type === "button" ? disabled : void 0,
6057
+ "data-disabled": boolDataAttr(type !== "button" && disabled),
6058
+ "aria-disabled": type !== "button" && disabled || loading || void 0,
6059
+ "data-loading": boolDataAttr(loading),
6015
6060
  "data-selected": boolDataAttr(selected),
6016
6061
  "data-accent": color,
6017
6062
  href,
6018
6063
  target,
6019
6064
  rel,
6065
+ tabIndex: type === "link" && disabled ? -1 : void 0,
6020
6066
  ...actionProps,
6021
6067
  onClick: combineEventHandlers(
6022
- actionProps?.onClick,
6023
6068
  handleSelect,
6069
+ actionProps?.onClick,
6024
6070
  { checkDefaultPrevented: true }
6025
6071
  ),
6026
6072
  className: cx(
@@ -6029,8 +6075,8 @@ const MenuListItem = forwardRef(
6029
6075
  actionProps?.className
6030
6076
  ),
6031
6077
  children: [
6032
- loading && iconPlacement === "start" && spinnerEl,
6033
- !loading && iconPlacement === "start" && iconEl,
6078
+ iconPlacement === "start" && spinnerEl,
6079
+ iconPlacement === "start" && iconEl,
6034
6080
  /* @__PURE__ */ jsx(
6035
6081
  "span",
6036
6082
  {
@@ -6042,8 +6088,8 @@ const MenuListItem = forwardRef(
6042
6088
  children: loading && loadingContent ? loadingContent : asChild ? children.props.children : children
6043
6089
  }
6044
6090
  ),
6045
- !loading && iconPlacement === "end" && iconEl,
6046
- loading && iconPlacement === "end" && spinnerEl
6091
+ iconPlacement === "end" && iconEl,
6092
+ iconPlacement === "end" && spinnerEl
6047
6093
  ]
6048
6094
  }
6049
6095
  );
@@ -6289,8 +6335,8 @@ const CommandMenuItem = forwardRef(function CommandMenuItem2({
6289
6335
  color,
6290
6336
  disabled,
6291
6337
  loading,
6292
- enabledWhenLoading,
6293
6338
  loadingContent,
6339
+ showSpinner,
6294
6340
  icon,
6295
6341
  iconPlacement,
6296
6342
  href,
@@ -6306,11 +6352,17 @@ const CommandMenuItem = forwardRef(function CommandMenuItem2({
6306
6352
  ...otherProps
6307
6353
  }, forwardedRef) {
6308
6354
  const prefix = usePrefix();
6309
- const handleSelect = useCallback(() => {
6310
- if (asLink) {
6311
- window.open(href, target, rel?.split(" ").join(","));
6312
- }
6313
- }, [asLink, href, rel, target]);
6355
+ const handleSelect = useCallback(
6356
+ (value) => {
6357
+ if (!loading) {
6358
+ onSelect?.(value);
6359
+ if (asLink) {
6360
+ window.open(href, target, rel?.split(" ").join(","));
6361
+ }
6362
+ }
6363
+ },
6364
+ [asLink, href, loading, onSelect, rel, target]
6365
+ );
6314
6366
  return /* @__PURE__ */ jsx(
6315
6367
  MenuListItem,
6316
6368
  {
@@ -6319,8 +6371,8 @@ const CommandMenuItem = forwardRef(function CommandMenuItem2({
6319
6371
  color,
6320
6372
  disabled,
6321
6373
  loading,
6322
- enabledWhenLoading,
6323
6374
  loadingContent,
6375
+ showSpinner,
6324
6376
  icon,
6325
6377
  iconPlacement,
6326
6378
  href,
@@ -6341,10 +6393,10 @@ const CommandMenuItem = forwardRef(function CommandMenuItem2({
6341
6393
  children: /* @__PURE__ */ jsx(
6342
6394
  Command.Item,
6343
6395
  {
6344
- disabled: disabled || loading && !enabledWhenLoading,
6396
+ disabled,
6345
6397
  ...otherProps,
6346
6398
  keywords: typeof children === "string" ? [children, ...keywords ?? []] : keywords,
6347
- onSelect: combineEventHandlers(onSelect, handleSelect),
6399
+ onSelect: handleSelect,
6348
6400
  className: cx(prefix("command-menu__item"), className),
6349
6401
  ref: forwardedRef,
6350
6402
  children
@@ -6665,7 +6717,7 @@ function SelectMultipleValue() {
6665
6717
  ),
6666
6718
  ...valueTagProps?.contentProps
6667
6719
  },
6668
- "aria-hidden": "true"
6720
+ "aria-hidden": true
6669
6721
  },
6670
6722
  optionState.content
6671
6723
  );
@@ -6712,6 +6764,7 @@ const Select = forwardRef(function Select2({
6712
6764
  readOnly,
6713
6765
  required,
6714
6766
  loading,
6767
+ loadingDescription,
6715
6768
  variant,
6716
6769
  status,
6717
6770
  code,
@@ -6722,6 +6775,7 @@ const Select = forwardRef(function Select2({
6722
6775
  loadingOptions,
6723
6776
  loadingOptionsLabel,
6724
6777
  loadingOptionsProgress,
6778
+ showSpinner = loading || loadingOptions,
6725
6779
  emptyMessage,
6726
6780
  valueTagMaxWidth,
6727
6781
  onKeyDown,
@@ -6774,11 +6828,11 @@ const Select = forwardRef(function Select2({
6774
6828
  evt.preventDefault();
6775
6829
  const buttonEl = buttonRef.current;
6776
6830
  const target = evt.target;
6777
- if (buttonEl && !disabled && !target.closest("input, select, textarea, button, a")) {
6831
+ if (buttonEl && !disabled && !loading && !target.closest("input, select, textarea, button, a")) {
6778
6832
  setOpen((open2) => !open2);
6779
6833
  }
6780
6834
  },
6781
- [disabled, setOpen]
6835
+ [disabled, loading, setOpen]
6782
6836
  );
6783
6837
  const handleOptionSelect = useCallback(
6784
6838
  (optionValue) => {
@@ -6843,7 +6897,7 @@ const Select = forwardRef(function Select2({
6843
6897
  value: actualValue,
6844
6898
  onOptionSelect: handleOptionSelect,
6845
6899
  status,
6846
- disabled,
6900
+ disabled: disabled || loading,
6847
6901
  readOnly,
6848
6902
  valueTagProps
6849
6903
  });
@@ -6851,7 +6905,7 @@ const Select = forwardRef(function Select2({
6851
6905
  () => ({ registering: true, ...selectContext }),
6852
6906
  [selectContext]
6853
6907
  );
6854
- const showOpen = open && !disabled && !readOnly;
6908
+ const showOpen = open && !disabled && !loading && !readOnly;
6855
6909
  const combinedClearButtonRef = useCombinedRef(
6856
6910
  clearButtonRef,
6857
6911
  clearButtonProps?.ref
@@ -6894,7 +6948,9 @@ const Select = forwardRef(function Select2({
6894
6948
  disabled,
6895
6949
  readOnly,
6896
6950
  required,
6897
- loading: loading || loadingOptions,
6951
+ loading,
6952
+ loadingDescription,
6953
+ showSpinner,
6898
6954
  startAdornment,
6899
6955
  endAdornment: /* @__PURE__ */ jsxs(Fragment, { children: [
6900
6956
  !readOnly && /* @__PURE__ */ jsx(
@@ -6907,7 +6963,7 @@ const Select = forwardRef(function Select2({
6907
6963
  arrowProps?.className
6908
6964
  ),
6909
6965
  "data-status": status,
6910
- "data-disabled": disabled
6966
+ "data-disabled": disabled || loading
6911
6967
  }
6912
6968
  ),
6913
6969
  endAdornment
@@ -6946,7 +7002,6 @@ const Select = forwardRef(function Select2({
6946
7002
  ...spinnerProps,
6947
7003
  className: cx(prefix("select__spinner"), spinnerProps?.className)
6948
7004
  },
6949
- "aria-readonly": readOnly ? "true" : void 0,
6950
7005
  "data-placeholder": boolDataAttr(isEmpty),
6951
7006
  children: /* @__PURE__ */ jsx("button", { ref: combinedButtonRef, children: /* @__PURE__ */ jsxs(
6952
7007
  "span",
@@ -7419,6 +7474,8 @@ const CheckboxGroup = forwardRef(function CheckboxGroup2({
7419
7474
  code,
7420
7475
  name,
7421
7476
  loading,
7477
+ loadingDescription,
7478
+ showSpinner = loading,
7422
7479
  required,
7423
7480
  disabled = false,
7424
7481
  readOnly = false,
@@ -7437,22 +7494,26 @@ const CheckboxGroup = forwardRef(function CheckboxGroup2({
7437
7494
  onMouseDown,
7438
7495
  tabIndex: controlledTabIndex,
7439
7496
  children,
7497
+ "aria-label": ariaLabel,
7440
7498
  "aria-labelledby": ariaLabelledBy,
7441
7499
  "aria-describedby": ariaDescribedBy,
7442
7500
  ...otherProps
7443
7501
  }, forwardedRef) {
7444
7502
  const prefix = usePrefix();
7503
+ const [locale7] = useLocale();
7504
+ loadingDescription ??= locale7.Input.loadingDescription;
7445
7505
  const labelId = useFieldLabelId();
7446
7506
  const dataTableColumnLabelId = useDataTableColumnLabelId();
7447
7507
  const descriptionIds = useFieldDescriptionIds();
7448
7508
  const errorMessageIds = useFieldErrorMessageIds();
7449
- const { controlId, codeId } = useSetFieldControl(
7509
+ const { generatedId, controlId, codeId } = useSetFieldControl(
7450
7510
  id,
7451
7511
  "DIV",
7452
7512
  codeProps?.id,
7453
- !!code,
7513
+ Boolean(code),
7454
7514
  required
7455
7515
  );
7516
+ const loadingDescriptionId = loading && loadingDescription ? prefix(`control-loading-${generatedId}`) : void 0;
7456
7517
  const checkboxGroupRef = useRef(null);
7457
7518
  const isInTableCell = useIsInTableCell();
7458
7519
  inline ??= isInTableCell;
@@ -7511,101 +7572,107 @@ const CheckboxGroup = forwardRef(function CheckboxGroup2({
7511
7572
  checkboxGroupRef,
7512
7573
  forwardedRef
7513
7574
  );
7514
- return /* @__PURE__ */ jsx(ClearContexts, { children: /* @__PURE__ */ jsx(ControlContext.Provider, { value: { variant, status, disabled, readOnly }, children: /* @__PURE__ */ jsx(
7515
- CheckboxGroupContext.Provider,
7575
+ return /* @__PURE__ */ jsx(ClearContexts, { children: /* @__PURE__ */ jsx(
7576
+ ControlContext.Provider,
7516
7577
  {
7517
- value: { name, value, onCheckedChange: handleCheckedChange },
7518
- children: /* @__PURE__ */ jsxs(
7519
- "div",
7578
+ value: { variant, status, disabled, loading, readOnly },
7579
+ children: /* @__PURE__ */ jsx(
7580
+ CheckboxGroupContext.Provider,
7520
7581
  {
7521
- role: "group",
7522
- id: controlId,
7523
- ...otherProps,
7524
- "data-status": status,
7525
- "data-accent": controlStatusToAccent(status),
7526
- "data-variant": variant,
7527
- className: cx(
7528
- prefix("checkbox-group"),
7529
- inline && prefix("checkbox-group--inline"),
7530
- className
7531
- ),
7532
- onMouseDown: combineEventHandlers(onMouseDown, handleMouseDown),
7533
- onFocus: combineEventHandlers(onFocus, handleFocus),
7534
- onBlur: combineEventHandlers(onBlur, handleBlur),
7535
- "aria-readonly": readOnly ? "true" : void 0,
7536
- "aria-labelledby": mergeAriaIds(
7537
- dataTableColumnLabelId,
7538
- labelId,
7539
- ariaLabelledBy
7540
- ),
7541
- "aria-describedby": mergeAriaIds(
7542
- codeId,
7543
- descriptionIds,
7582
+ value: {
7583
+ name,
7584
+ value,
7585
+ onCheckedChange: handleCheckedChange,
7586
+ loadingDescriptionId,
7544
7587
  errorMessageIds,
7545
- ariaDescribedBy
7546
- ),
7547
- tabIndex,
7548
- ref: combinedCheckboxGroupRef,
7549
- children: [
7550
- code && /* @__PURE__ */ jsx(
7551
- ControlCode,
7552
- {
7553
- status,
7554
- ...codeProps,
7555
- id: codeId,
7556
- className: cx(
7557
- prefix("checkbox-group__code"),
7558
- codeProps?.className
7559
- ),
7560
- children: code
7561
- }
7562
- ),
7563
- /* @__PURE__ */ jsx(
7564
- "div",
7565
- {
7566
- "data-status": status,
7567
- "data-variant": variant,
7568
- "data-disabled": boolDataAttr(disabled),
7569
- "data-readonly": boolDataAttr(readOnly),
7570
- ...containerProps,
7571
- className: cx(
7572
- prefix("checkbox-group__container"),
7573
- containerProps?.className
7574
- ),
7575
- children: /* @__PURE__ */ jsx(ClearContexts, { children })
7576
- }
7577
- ),
7578
- loading && /* @__PURE__ */ jsx(
7579
- "div",
7580
- {
7581
- "data-status": status,
7582
- "data-variant": variant,
7583
- "data-disabled": boolDataAttr(disabled),
7584
- "data-readonly": boolDataAttr(readOnly),
7585
- ...endContainerProps,
7586
- className: cx(
7587
- prefix("checkbox-group__end-container"),
7588
- endContainerProps?.className
7589
- ),
7590
- children: /* @__PURE__ */ jsx(
7591
- Spinner,
7588
+ ariaDescribedBy,
7589
+ descriptionIds
7590
+ },
7591
+ children: /* @__PURE__ */ jsxs(
7592
+ "div",
7593
+ {
7594
+ role: "group",
7595
+ id: controlId,
7596
+ ...otherProps,
7597
+ "data-status": status,
7598
+ "data-accent": controlStatusToAccent(status),
7599
+ "data-variant": variant,
7600
+ className: cx(
7601
+ prefix("checkbox-group"),
7602
+ inline && prefix("checkbox-group--inline"),
7603
+ className
7604
+ ),
7605
+ onMouseDown: combineEventHandlers(onMouseDown, handleMouseDown),
7606
+ onFocus: combineEventHandlers(onFocus, handleFocus),
7607
+ onBlur: combineEventHandlers(onBlur, handleBlur),
7608
+ "aria-disabled": loading || readOnly || void 0,
7609
+ "aria-label": ariaLabel,
7610
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 ? combineAriaIds(codeId, labelId ?? dataTableColumnLabelId) : void 0),
7611
+ tabIndex,
7612
+ ref: combinedCheckboxGroupRef,
7613
+ children: [
7614
+ code && /* @__PURE__ */ jsx(
7615
+ ControlCode,
7592
7616
  {
7593
- color: controlStatusToAccent(status, "neutral"),
7594
- "data-disabled": boolDataAttr(disabled),
7595
- ...spinnerProps,
7617
+ status,
7618
+ ...codeProps,
7619
+ id: codeId,
7596
7620
  className: cx(
7597
- prefix("checkbox-group__spinner"),
7598
- spinnerProps?.className
7599
- )
7621
+ prefix("checkbox-group__code"),
7622
+ codeProps?.className
7623
+ ),
7624
+ children: code
7600
7625
  }
7601
- )
7602
- }
7603
- )
7604
- ]
7605
- }
7626
+ ),
7627
+ /* @__PURE__ */ jsx(
7628
+ "div",
7629
+ {
7630
+ "data-status": status,
7631
+ "data-variant": variant,
7632
+ "data-disabled": boolDataAttr(disabled || loading),
7633
+ "data-readonly": boolDataAttr(readOnly),
7634
+ ...containerProps,
7635
+ className: cx(
7636
+ prefix("checkbox-group__container"),
7637
+ containerProps?.className
7638
+ ),
7639
+ children: /* @__PURE__ */ jsx(ClearContexts, { children })
7640
+ }
7641
+ ),
7642
+ showSpinner && /* @__PURE__ */ jsx(
7643
+ "div",
7644
+ {
7645
+ "data-status": status,
7646
+ "data-variant": variant,
7647
+ "data-disabled": boolDataAttr(disabled || loading),
7648
+ "data-readonly": boolDataAttr(readOnly),
7649
+ ...endContainerProps,
7650
+ className: cx(
7651
+ prefix("checkbox-group__end-container"),
7652
+ endContainerProps?.className
7653
+ ),
7654
+ children: /* @__PURE__ */ jsx(
7655
+ Spinner,
7656
+ {
7657
+ color: controlStatusToAccent(status, "neutral"),
7658
+ "data-disabled": boolDataAttr(disabled || loading),
7659
+ ...spinnerProps,
7660
+ className: cx(
7661
+ prefix("checkbox-group__spinner"),
7662
+ spinnerProps?.className
7663
+ )
7664
+ }
7665
+ )
7666
+ }
7667
+ ),
7668
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription })
7669
+ ]
7670
+ }
7671
+ )
7672
+ }
7606
7673
  )
7607
7674
  }
7608
- ) }) });
7675
+ ) });
7609
7676
  });
7610
7677
  const Container = forwardRef(
7611
7678
  function Container2({
@@ -7717,6 +7784,7 @@ const DateInput = forwardRef(
7717
7784
  onChange,
7718
7785
  onFocus,
7719
7786
  disabled,
7787
+ loading,
7720
7788
  readOnly,
7721
7789
  showClearButton = "auto",
7722
7790
  endAdornment,
@@ -7920,6 +7988,7 @@ const DateInput = forwardRef(
7920
7988
  value: formattedValue,
7921
7989
  placeholder,
7922
7990
  disabled,
7991
+ loading,
7923
7992
  readOnly,
7924
7993
  onChange: combineEventHandlers(onChange, handleInputChange),
7925
7994
  onFocus: combineEventHandlers(onFocus, handleInputFocus),
@@ -7933,7 +8002,7 @@ const DateInput = forwardRef(
7933
8002
  className: printHidden,
7934
8003
  "aria-label": calendarButtonLabel?.(
7935
8004
  fullFormattedValue,
7936
- !disabled && !readOnly
8005
+ !disabled && !loading && !readOnly
7937
8006
  ),
7938
8007
  onClick: handleAddonButtonClick,
7939
8008
  onBlur: handleControlBlur,
@@ -7943,7 +8012,7 @@ const DateInput = forwardRef(
7943
8012
  }
7944
8013
  ) }) })
7945
8014
  ] }),
7946
- "aria-describedby": mergeAriaIds(
8015
+ "aria-describedby": combineAriaIds(
7947
8016
  formatDescriptionId,
7948
8017
  ariaDescribedBy
7949
8018
  ),
@@ -8007,7 +8076,7 @@ const DateInput = forwardRef(
8007
8076
  ),
8008
8077
  month,
8009
8078
  onMonthChange: handleMonthChange,
8010
- disabled: disabled || readOnly || datePickerProps?.disabled,
8079
+ disabled: disabled || loading || readOnly || datePickerProps?.disabled,
8011
8080
  minDate,
8012
8081
  maxDate,
8013
8082
  minMonth,
@@ -8143,8 +8212,10 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8143
8212
  minYear,
8144
8213
  maxYear,
8145
8214
  loading,
8146
- startLoading = loading,
8147
- endLoading = loading,
8215
+ loadingDescription,
8216
+ showSpinners = loading,
8217
+ showStartSpinner = showSpinners,
8218
+ showEndSpinner = showSpinners,
8148
8219
  align,
8149
8220
  startAdornment,
8150
8221
  endAdornment,
@@ -8178,6 +8249,7 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8178
8249
  }, forwardedRef) {
8179
8250
  const prefix = usePrefix();
8180
8251
  const [locale7] = useLocale();
8252
+ loadingDescription ??= locale7.Input.loadingDescription;
8181
8253
  clearButtonsLabel ??= locale7.Input.clearButtonLabel;
8182
8254
  dateFnsLocale ??= locale7.dateFnsLocale;
8183
8255
  placeholder ??= locale7.DateInput.placeholder;
@@ -8195,17 +8267,17 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8195
8267
  const descriptionIds = useFieldDescriptionIds();
8196
8268
  const errorMessageIds = useFieldErrorMessageIds();
8197
8269
  const { printHidden } = usePrintClassNames();
8198
- const { controlId, codeId } = useSetFieldControl(
8270
+ const { generatedId, controlId, codeId } = useSetFieldControl(
8199
8271
  startInputProps?.id,
8200
8272
  "INPUT",
8201
8273
  codeProps?.id,
8202
- !!code,
8274
+ Boolean(code),
8203
8275
  required
8204
8276
  );
8205
8277
  const setFieldControlFocused = useSetFieldControlFocused();
8206
- const generatedId = useId();
8207
8278
  const startInputLabelId = startInputLabel && prefix(`control-start-label-${generatedId}`);
8208
8279
  const endInputLabelId = endInputLabel && prefix(`control-end-label-${generatedId}`);
8280
+ const loadingDescriptionId = loading && loadingDescription && prefix(`control-loading-${generatedId}`);
8209
8281
  const formatDescriptionId = formatDescription && prefix(`control-format-${generatedId}`);
8210
8282
  const isInTableCell = useIsInTableCell();
8211
8283
  variant ??= isInTableCell ? "cell" : "default";
@@ -8384,10 +8456,14 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8384
8456
  );
8385
8457
  const handleClearButtonClick = useCallback(
8386
8458
  (ref) => () => {
8387
- if (ref.current) {
8388
- setNativeValue(ref.current, "");
8389
- ref.current.dispatchEvent(new Event("change", { bubbles: true }));
8390
- ref.current.focus();
8459
+ const inputEl = ref.current;
8460
+ if (inputEl && inputEl.value !== "") {
8461
+ setNativeProperty(inputEl, "value", "");
8462
+ const event = new Event("change", { bubbles: true, cancelable: true });
8463
+ inputEl.dispatchEvent(event);
8464
+ if (!event.defaultPrevented) {
8465
+ inputEl.focus();
8466
+ }
8391
8467
  }
8392
8468
  },
8393
8469
  []
@@ -8502,8 +8578,8 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8502
8578
  setFormattedValue
8503
8579
  ]
8504
8580
  );
8505
- const hasStartClearButton = !disabled && !startInputProps?.disabled && !readOnly && !startInputProps?.readOnly && (showClearButtons === true || showClearButtons === "auto" && formattedValue.start !== "");
8506
- const hasEndClearButton = !disabled && !endInputProps?.disabled && !readOnly && !endInputProps?.readOnly && (showClearButtons === true || showClearButtons === "auto" && formattedValue.end !== "");
8581
+ const hasStartClearButton = !disabled && !loading && !startInputProps?.disabled && !readOnly && !startInputProps?.readOnly && (showClearButtons === true || showClearButtons === "auto" && formattedValue.start !== "");
8582
+ const hasEndClearButton = !disabled && !loading && !endInputProps?.disabled && !readOnly && !endInputProps?.readOnly && (showClearButtons === true || showClearButtons === "auto" && formattedValue.end !== "");
8507
8583
  const { responsiveValuesToCssVarsAndDataAttrs } = useResponsiveValues();
8508
8584
  const { cssVars, dataAttrs } = responsiveValuesToCssVarsAndDataAttrs(
8509
8585
  "control",
@@ -8537,373 +8613,393 @@ const DateRangeInput = forwardRef(function DateRangeInput2({
8537
8613
  popoverRef,
8538
8614
  popoverContentProps?.ref
8539
8615
  );
8540
- return /* @__PURE__ */ jsx(ClearContexts, { field: false, children: /* @__PURE__ */ jsx(ControlContext.Provider, { value: { variant, status, disabled, readOnly }, children: /* @__PURE__ */ jsxs(
8541
- "div",
8616
+ return /* @__PURE__ */ jsx(ClearContexts, { field: false, children: /* @__PURE__ */ jsx(
8617
+ ControlContext.Provider,
8542
8618
  {
8543
- "data-status": status,
8544
- "data-accent": controlStatusToAccent(status),
8545
- "data-variant": variant,
8546
- "data-disabled": boolDataAttr(disabled),
8547
- "data-readonly": boolDataAttr(readOnly),
8548
- className: cx(prefix("date-range-input__root"), className),
8549
- ...otherProps,
8550
- ref: forwardedRef,
8551
- children: [
8552
- startInputLabel && /* @__PURE__ */ jsx(VisuallyHidden, { id: startInputLabelId, children: startInputLabel }),
8553
- endInputLabel && /* @__PURE__ */ jsx(VisuallyHidden, { id: endInputLabelId, children: endInputLabel }),
8554
- formatDescription && /* @__PURE__ */ jsx(VisuallyHidden, { id: formatDescriptionId, children: formatDescription }),
8555
- code && /* @__PURE__ */ jsx(
8556
- ControlCode,
8557
- {
8558
- ...codeProps,
8559
- id: codeId,
8560
- className: cx(
8561
- prefix("date-range-input__code"),
8562
- codeProps?.className
8619
+ value: { variant, status, disabled, loading, readOnly },
8620
+ children: /* @__PURE__ */ jsxs(
8621
+ "div",
8622
+ {
8623
+ "data-status": status,
8624
+ "data-accent": controlStatusToAccent(status),
8625
+ "data-variant": variant,
8626
+ "data-disabled": boolDataAttr(
8627
+ disabled || loading || startInputProps?.disabled && endInputProps?.disabled
8628
+ ),
8629
+ "data-readonly": boolDataAttr(
8630
+ readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8631
+ ),
8632
+ className: cx(prefix("date-range-input__root"), className),
8633
+ ...otherProps,
8634
+ ref: forwardedRef,
8635
+ children: [
8636
+ startInputLabelId && /* @__PURE__ */ jsx(VisuallyHidden, { id: startInputLabelId, children: startInputLabel }),
8637
+ endInputLabelId && /* @__PURE__ */ jsx(VisuallyHidden, { id: endInputLabelId, children: endInputLabel }),
8638
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription }),
8639
+ formatDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: formatDescriptionId, children: formatDescription }),
8640
+ code && /* @__PURE__ */ jsx(
8641
+ ControlCode,
8642
+ {
8643
+ ...codeProps,
8644
+ id: codeId,
8645
+ className: cx(
8646
+ prefix("date-range-input__code"),
8647
+ codeProps?.className
8648
+ ),
8649
+ children: code
8650
+ }
8563
8651
  ),
8564
- children: code
8565
- }
8566
- ),
8567
- /* @__PURE__ */ jsxs(Popover, { open: popoverState.open, modal: popoverState.modal, children: [
8568
- /* @__PURE__ */ jsxs(
8569
- PopoverAnchor,
8570
- {
8571
- ...popoverAnchorProps,
8572
- className: cx(
8573
- prefix("date-range-input__container"),
8574
- prefix("date-range-input__popover-anchor"),
8575
- popoverAnchorProps?.className
8576
- ),
8577
- children: [
8578
- startAdornment,
8579
- /* @__PURE__ */ jsxs(
8580
- "div",
8581
- {
8582
- "data-focused": boolDataAttr(
8583
- !disabled && !startInputProps?.disabled && popoverState.open && selectionMode === "start"
8584
- ),
8585
- "data-status": status,
8586
- "data-accent": controlStatusToAccent(status),
8587
- "data-variant": variant,
8588
- "data-disabled": boolDataAttr(
8589
- disabled || startInputProps?.disabled && endInputProps?.disabled
8590
- ),
8591
- "data-readonly": boolDataAttr(
8592
- readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8593
- ),
8594
- ...startContainerProps,
8595
- className: cx(
8596
- prefix("date-range-input__container"),
8597
- prefix("date-range-input__container--start"),
8598
- startContainerProps?.className
8599
- ),
8600
- onPointerDown: combineEventHandlers(
8601
- startContainerProps?.onPointerDown,
8602
- handleContainerPointerDown("start")
8603
- ),
8604
- ref: combinedStartContainerRef,
8605
- children: [
8606
- /* @__PURE__ */ jsx(
8607
- "input",
8608
- {
8609
- ...startInputProps,
8610
- id: controlId,
8611
- "data-status": status,
8612
- "data-variant": variant,
8613
- className: cx(
8614
- prefix("date-range-input"),
8615
- prefix("date-range-input--start"),
8616
- startInputProps?.className
8617
- ),
8618
- value: formattedValue.start,
8619
- placeholder: startInputProps?.placeholder ?? startPlaceholder ?? placeholder,
8620
- required: required || startInputProps?.required,
8621
- disabled: disabled || startInputProps?.disabled,
8622
- readOnly: readOnly || startInputProps?.readOnly,
8623
- onChange: combineEventHandlers(
8624
- startInputProps?.onChange,
8625
- handleStartInputChange
8626
- ),
8627
- onFocus: combineEventHandlers(
8628
- startInputProps?.onFocus,
8629
- handleInputFocus("start")
8630
- ),
8631
- onBlur: combineEventHandlers(
8632
- startInputProps?.onBlur,
8633
- handleControlBlur
8634
- ),
8635
- style: { ...cssVars, ...startInputProps?.style },
8636
- ...dataAttrs,
8637
- "aria-invalid": status === "invalid" ? "true" : void 0,
8638
- "aria-labelledby": mergeAriaIds(
8639
- dataTableColumnLabelId,
8640
- labelId,
8641
- startInputLabelId,
8642
- startInputProps?.["aria-labelledby"]
8643
- ),
8644
- "aria-describedby": mergeAriaIds(
8645
- codeId,
8646
- errorMessageIds,
8647
- descriptionIds,
8648
- formatDescriptionId,
8649
- startInputProps?.["aria-describedby"]
8650
- ),
8651
- ref: combinedStartInputRef
8652
- }
8653
- ),
8654
- hasStartClearButton && /* @__PURE__ */ jsx(
8655
- CloseButton,
8656
- {
8657
- size: "sm",
8658
- label: clearButtonsLabel,
8659
- tabIndex: -1,
8660
- ...startClearButtonProps,
8661
- className: cx(
8662
- prefix("date-range-input__clear-button"),
8663
- prefix("date-range-input__clear-button--start"),
8664
- printHidden,
8665
- startClearButtonProps?.className
8666
- ),
8667
- onClick: combineEventHandlers(
8668
- startClearButtonProps?.onClick,
8669
- handleClearButtonClick(startInputRef),
8670
- { checkDefaultPrevented: true }
8652
+ /* @__PURE__ */ jsxs(Popover, { open: popoverState.open, modal: popoverState.modal, children: [
8653
+ /* @__PURE__ */ jsxs(
8654
+ PopoverAnchor,
8655
+ {
8656
+ "data-status": status,
8657
+ "data-accent": controlStatusToAccent(status),
8658
+ "data-variant": variant,
8659
+ "data-disabled": boolDataAttr(
8660
+ disabled || loading || startInputProps?.disabled && endInputProps?.disabled
8661
+ ),
8662
+ "data-readonly": boolDataAttr(
8663
+ readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8664
+ ),
8665
+ ...popoverAnchorProps,
8666
+ className: cx(
8667
+ prefix("date-range-input__container"),
8668
+ prefix("date-range-input__popover-anchor"),
8669
+ popoverAnchorProps?.className
8670
+ ),
8671
+ children: [
8672
+ startAdornment,
8673
+ /* @__PURE__ */ jsxs(
8674
+ "div",
8675
+ {
8676
+ "data-focused": boolDataAttr(
8677
+ !disabled && !startInputProps?.disabled && popoverState.open && selectionMode === "start"
8678
+ ),
8679
+ "data-status": status,
8680
+ "data-accent": controlStatusToAccent(status),
8681
+ "data-variant": variant,
8682
+ "data-disabled": boolDataAttr(
8683
+ disabled || loading || startInputProps?.disabled && endInputProps?.disabled
8684
+ ),
8685
+ "data-readonly": boolDataAttr(
8686
+ readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8687
+ ),
8688
+ ...startContainerProps,
8689
+ className: cx(
8690
+ prefix("date-range-input__container"),
8691
+ prefix("date-range-input__container--start"),
8692
+ startContainerProps?.className
8693
+ ),
8694
+ onPointerDown: combineEventHandlers(
8695
+ startContainerProps?.onPointerDown,
8696
+ handleContainerPointerDown("start")
8697
+ ),
8698
+ ref: combinedStartContainerRef,
8699
+ children: [
8700
+ /* @__PURE__ */ jsx(
8701
+ "input",
8702
+ {
8703
+ ...startInputProps,
8704
+ id: controlId,
8705
+ "data-loading": boolDataAttr(loading),
8706
+ "data-status": status,
8707
+ "data-variant": variant,
8708
+ className: cx(
8709
+ prefix("date-range-input"),
8710
+ prefix("date-range-input--start"),
8711
+ startInputProps?.className
8712
+ ),
8713
+ value: formattedValue.start,
8714
+ placeholder: startInputProps?.placeholder ?? startPlaceholder ?? placeholder,
8715
+ required: required || startInputProps?.required,
8716
+ disabled: disabled || startInputProps?.disabled,
8717
+ readOnly: readOnly || loading || startInputProps?.readOnly,
8718
+ onChange: combineEventHandlers(
8719
+ startInputProps?.onChange,
8720
+ handleStartInputChange
8721
+ ),
8722
+ onFocus: combineEventHandlers(
8723
+ startInputProps?.onFocus,
8724
+ handleInputFocus("start")
8725
+ ),
8726
+ onBlur: combineEventHandlers(
8727
+ startInputProps?.onBlur,
8728
+ handleControlBlur
8729
+ ),
8730
+ style: { ...cssVars, ...startInputProps?.style },
8731
+ ...dataAttrs,
8732
+ "aria-invalid": status === "invalid" || void 0,
8733
+ "aria-labelledby": startInputProps?.["aria-labelledby"] ?? (startInputProps?.["aria-label"] === void 0 ? combineAriaIds(
8734
+ codeId,
8735
+ labelId ?? dataTableColumnLabelId,
8736
+ startInputLabelId
8737
+ ) : void 0),
8738
+ "aria-describedby": combineAriaIds(
8739
+ loadingDescriptionId,
8740
+ errorMessageIds,
8741
+ startInputProps?.["aria-describedby"],
8742
+ formatDescriptionId,
8743
+ descriptionIds
8744
+ ),
8745
+ ref: combinedStartInputRef
8746
+ }
8671
8747
  ),
8672
- ref: combinedStartClearButtonRef
8673
- }
8674
- ),
8675
- startLoading && /* @__PURE__ */ jsx(
8676
- Spinner,
8677
- {
8678
- color: controlStatusToAccent(status, "neutral"),
8679
- "data-disabled": boolDataAttr(
8680
- disabled || startInputProps?.disabled
8748
+ hasStartClearButton && /* @__PURE__ */ jsx(
8749
+ CloseButton,
8750
+ {
8751
+ size: "sm",
8752
+ label: clearButtonsLabel,
8753
+ tabIndex: -1,
8754
+ ...startClearButtonProps,
8755
+ className: cx(
8756
+ prefix("date-range-input__clear-button"),
8757
+ prefix("date-range-input__clear-button--start"),
8758
+ printHidden,
8759
+ startClearButtonProps?.className
8760
+ ),
8761
+ onClick: combineEventHandlers(
8762
+ startClearButtonProps?.onClick,
8763
+ handleClearButtonClick(startInputRef),
8764
+ { checkDefaultPrevented: true }
8765
+ ),
8766
+ ref: combinedStartClearButtonRef
8767
+ }
8681
8768
  ),
8682
- ...spinnerProps,
8683
- className: cx(
8684
- prefix("date-range-input__spinner"),
8685
- prefix("date-range-input__spinner--start"),
8686
- spinnerProps?.className
8769
+ showStartSpinner && /* @__PURE__ */ jsx(
8770
+ Spinner,
8771
+ {
8772
+ color: controlStatusToAccent(status, "neutral"),
8773
+ "data-disabled": boolDataAttr(
8774
+ disabled || loading || startInputProps?.disabled
8775
+ ),
8776
+ ...spinnerProps,
8777
+ className: cx(
8778
+ prefix("date-range-input__spinner"),
8779
+ prefix("date-range-input__spinner--start"),
8780
+ spinnerProps?.className
8781
+ )
8782
+ }
8687
8783
  )
8688
- }
8689
- )
8690
- ]
8691
- }
8692
- ),
8693
- /* @__PURE__ */ jsx(ControlAddon, { className: cx(prefix("date-range-input__arrow")), children: /* @__PURE__ */ jsx(Icon, { icon: faArrowRight }) }),
8694
- /* @__PURE__ */ jsxs(
8695
- "div",
8696
- {
8697
- "data-focused": boolDataAttr(
8698
- !disabled && !endInputProps?.disabled && popoverState.open && selectionMode === "end"
8699
- ),
8700
- "data-status": status,
8701
- "data-accent": controlStatusToAccent(status),
8702
- "data-variant": variant,
8703
- "data-disabled": boolDataAttr(
8704
- disabled || startInputProps?.disabled && endInputProps?.disabled
8705
- ),
8706
- "data-readonly": boolDataAttr(
8707
- readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8708
- ),
8709
- ...endContainerProps,
8710
- className: cx(
8711
- prefix("date-range-input__container"),
8712
- prefix("date-range-input__container--end"),
8713
- endContainerProps?.className
8714
- ),
8715
- onPointerDown: combineEventHandlers(
8716
- endContainerProps?.onPointerDown,
8717
- handleContainerPointerDown("end")
8784
+ ]
8785
+ }
8718
8786
  ),
8719
- ref: combinedEndContainerRef,
8720
- children: [
8721
- /* @__PURE__ */ jsx(
8722
- "input",
8723
- {
8724
- ...endInputProps,
8725
- "data-status": status,
8726
- "data-variant": variant,
8727
- className: cx(
8728
- prefix("date-range-input"),
8729
- prefix("date-range-input--end"),
8730
- endInputProps?.className
8731
- ),
8732
- value: formattedValue.end,
8733
- placeholder: endInputProps?.placeholder ?? endPlaceholder ?? placeholder,
8734
- required: required || endInputProps?.required,
8735
- disabled: disabled || endInputProps?.disabled,
8736
- readOnly: readOnly || endInputProps?.readOnly,
8737
- onChange: combineEventHandlers(
8738
- endInputProps?.onChange,
8739
- handleEndInputChange
8740
- ),
8741
- onFocus: combineEventHandlers(
8742
- endInputProps?.onFocus,
8743
- handleInputFocus("end")
8744
- ),
8745
- onBlur: combineEventHandlers(
8746
- endInputProps?.onBlur,
8747
- handleControlBlur
8748
- ),
8749
- style: { ...cssVars, ...endInputProps?.style },
8750
- ...dataAttrs,
8751
- "aria-invalid": status === "invalid" ? "true" : void 0,
8752
- "aria-labelledby": mergeAriaIds(
8753
- dataTableColumnLabelId,
8754
- labelId,
8755
- endInputLabelId,
8756
- endInputProps?.["aria-labelledby"]
8757
- ),
8758
- "aria-describedby": mergeAriaIds(
8759
- codeId,
8760
- errorMessageIds,
8761
- descriptionIds,
8762
- formatDescriptionId,
8763
- endInputProps?.["aria-describedby"]
8764
- ),
8765
- ref: combinedEndInputRef
8766
- }
8767
- ),
8768
- hasEndClearButton && /* @__PURE__ */ jsx(
8769
- CloseButton,
8770
- {
8771
- size: "sm",
8772
- label: clearButtonsLabel,
8773
- tabIndex: -1,
8774
- ...endClearButtonProps,
8775
- className: cx(
8776
- prefix("date-range-input__clear-button"),
8777
- prefix("date-range-input__clear-button--end"),
8778
- printHidden,
8779
- endClearButtonProps?.className
8780
- ),
8781
- onClick: combineEventHandlers(
8782
- endClearButtonProps?.onClick,
8783
- handleClearButtonClick(endInputRef),
8784
- { checkDefaultPrevented: true }
8787
+ /* @__PURE__ */ jsx(ControlAddon, { className: cx(prefix("date-range-input__arrow")), children: /* @__PURE__ */ jsx(Icon, { icon: faArrowRight }) }),
8788
+ /* @__PURE__ */ jsxs(
8789
+ "div",
8790
+ {
8791
+ "data-focused": boolDataAttr(
8792
+ !disabled && !endInputProps?.disabled && popoverState.open && selectionMode === "end"
8793
+ ),
8794
+ "data-status": status,
8795
+ "data-accent": controlStatusToAccent(status),
8796
+ "data-variant": variant,
8797
+ "data-disabled": boolDataAttr(
8798
+ disabled || loading || startInputProps?.disabled && endInputProps?.disabled
8799
+ ),
8800
+ "data-readonly": boolDataAttr(
8801
+ readOnly || startInputProps?.readOnly && endInputProps?.readOnly
8802
+ ),
8803
+ ...endContainerProps,
8804
+ className: cx(
8805
+ prefix("date-range-input__container"),
8806
+ prefix("date-range-input__container--end"),
8807
+ endContainerProps?.className
8808
+ ),
8809
+ onPointerDown: combineEventHandlers(
8810
+ endContainerProps?.onPointerDown,
8811
+ handleContainerPointerDown("end")
8812
+ ),
8813
+ ref: combinedEndContainerRef,
8814
+ children: [
8815
+ /* @__PURE__ */ jsx(
8816
+ "input",
8817
+ {
8818
+ ...endInputProps,
8819
+ "data-loading": boolDataAttr(loading),
8820
+ "data-status": status,
8821
+ "data-variant": variant,
8822
+ className: cx(
8823
+ prefix("date-range-input"),
8824
+ prefix("date-range-input--end"),
8825
+ endInputProps?.className
8826
+ ),
8827
+ value: formattedValue.end,
8828
+ placeholder: endInputProps?.placeholder ?? endPlaceholder ?? placeholder,
8829
+ required: required || endInputProps?.required,
8830
+ disabled: disabled || endInputProps?.disabled,
8831
+ readOnly: readOnly || loading || endInputProps?.readOnly,
8832
+ onChange: combineEventHandlers(
8833
+ endInputProps?.onChange,
8834
+ handleEndInputChange
8835
+ ),
8836
+ onFocus: combineEventHandlers(
8837
+ endInputProps?.onFocus,
8838
+ handleInputFocus("end")
8839
+ ),
8840
+ onBlur: combineEventHandlers(
8841
+ endInputProps?.onBlur,
8842
+ handleControlBlur
8843
+ ),
8844
+ style: { ...cssVars, ...endInputProps?.style },
8845
+ ...dataAttrs,
8846
+ "aria-invalid": status === "invalid" || void 0,
8847
+ "aria-labelledby": endInputProps?.["aria-labelledby"] ?? (endInputProps?.["aria-label"] === void 0 ? combineAriaIds(
8848
+ codeId,
8849
+ labelId ?? dataTableColumnLabelId,
8850
+ endInputLabelId
8851
+ ) : void 0),
8852
+ "aria-describedby": combineAriaIds(
8853
+ loadingDescriptionId,
8854
+ errorMessageIds,
8855
+ endInputProps?.["aria-describedby"],
8856
+ formatDescriptionId,
8857
+ descriptionIds
8858
+ ),
8859
+ ref: combinedEndInputRef
8860
+ }
8785
8861
  ),
8786
- ref: combinedEndClearButtonRef
8787
- }
8788
- ),
8789
- endLoading && /* @__PURE__ */ jsx(
8790
- Spinner,
8791
- {
8792
- color: controlStatusToAccent(status, "neutral"),
8793
- "data-disabled": boolDataAttr(
8794
- disabled || endInputProps?.disabled
8862
+ hasEndClearButton && /* @__PURE__ */ jsx(
8863
+ CloseButton,
8864
+ {
8865
+ size: "sm",
8866
+ label: clearButtonsLabel,
8867
+ tabIndex: -1,
8868
+ ...endClearButtonProps,
8869
+ className: cx(
8870
+ prefix("date-range-input__clear-button"),
8871
+ prefix("date-range-input__clear-button--end"),
8872
+ printHidden,
8873
+ endClearButtonProps?.className
8874
+ ),
8875
+ onClick: combineEventHandlers(
8876
+ endClearButtonProps?.onClick,
8877
+ handleClearButtonClick(endInputRef),
8878
+ { checkDefaultPrevented: true }
8879
+ ),
8880
+ ref: combinedEndClearButtonRef
8881
+ }
8795
8882
  ),
8796
- ...spinnerProps,
8797
- className: cx(
8798
- prefix("date-range-input__spinner"),
8799
- prefix("date-range-input__spinner--end"),
8800
- spinnerProps?.className
8883
+ showEndSpinner && /* @__PURE__ */ jsx(
8884
+ Spinner,
8885
+ {
8886
+ color: controlStatusToAccent(status, "neutral"),
8887
+ "data-disabled": boolDataAttr(
8888
+ disabled || loading || endInputProps?.disabled
8889
+ ),
8890
+ ...spinnerProps,
8891
+ className: cx(
8892
+ prefix("date-range-input__spinner"),
8893
+ prefix("date-range-input__spinner--end"),
8894
+ spinnerProps?.className
8895
+ )
8896
+ }
8801
8897
  )
8802
- }
8803
- )
8804
- ]
8805
- }
8806
- ),
8807
- endAdornment,
8808
- /* @__PURE__ */ jsx(ControlAddon, { asChild: true, children: /* @__PURE__ */ jsx(PopoverTrigger, { children: /* @__PURE__ */ jsx(
8809
- "button",
8810
- {
8811
- "aria-label": calendarButtonLabel?.(
8812
- fullFormattedValue,
8813
- !disabled && !readOnly
8814
- ),
8815
- onClick: handleAddonButtonClick,
8816
- onBlur: handleControlBlur,
8817
- "data-state": void 0,
8818
- className: cx(
8819
- prefix("date-range-input__calendar-button"),
8820
- printHidden
8898
+ ]
8899
+ }
8821
8900
  ),
8822
- ref: addonButtonRef,
8823
- children: /* @__PURE__ */ jsx(Icon, { icon: faCalendar })
8824
- }
8825
- ) }) })
8826
- ]
8827
- }
8828
- ),
8829
- /* @__PURE__ */ jsx(
8830
- PopoverContent,
8831
- {
8832
- ...popoverContentProps,
8833
- className: cx(
8834
- prefix("date-range-input__popover"),
8835
- popoverContentProps?.className
8836
- ),
8837
- side: popoverContentProps?.side ?? "bottom",
8838
- sideOffset: popoverContentProps?.sideOffset ?? 5,
8839
- showArrow: popoverContentProps?.showArrow ?? false,
8840
- onOpenAutoFocus: combineEventHandlers(
8841
- popoverContentProps?.onOpenAutoFocus,
8842
- handlePopoverOpenAutoFocus
8843
- ),
8844
- onEscapeKeyDown: combineEventHandlers(
8845
- popoverContentProps?.onEscapeKeyDown,
8846
- handlePopoverEscapeKeyDown
8847
- ),
8848
- onPointerDownOutside: combineEventHandlers(
8849
- popoverContentProps?.onPointerDownOutside,
8850
- handlePopoverPointerDownOutside
8851
- ),
8852
- onInteractOutside: combineEventHandlers(
8853
- popoverContentProps?.onInteractOutside,
8854
- handlePopoverInteractOutside
8855
- ),
8856
- onBlur: combineEventHandlers(
8857
- popoverContentProps?.onBlur,
8858
- handleControlBlur
8901
+ endAdornment,
8902
+ /* @__PURE__ */ jsx(ControlAddon, { asChild: true, children: /* @__PURE__ */ jsx(PopoverTrigger, { children: /* @__PURE__ */ jsx(
8903
+ "button",
8904
+ {
8905
+ "aria-label": calendarButtonLabel?.(
8906
+ fullFormattedValue,
8907
+ !disabled && !loading && !readOnly
8908
+ ),
8909
+ onClick: handleAddonButtonClick,
8910
+ onBlur: handleControlBlur,
8911
+ "data-state": void 0,
8912
+ className: cx(
8913
+ prefix("date-range-input__calendar-button"),
8914
+ printHidden
8915
+ ),
8916
+ ref: addonButtonRef,
8917
+ children: /* @__PURE__ */ jsx(Icon, { icon: faCalendar })
8918
+ }
8919
+ ) }) })
8920
+ ]
8921
+ }
8859
8922
  ),
8860
- ref: combinedPopoverRef,
8861
- children: /* @__PURE__ */ jsx(
8862
- DateRangePicker,
8923
+ /* @__PURE__ */ jsx(
8924
+ PopoverContent,
8863
8925
  {
8926
+ ...popoverContentProps,
8864
8927
  className: cx(
8865
- prefix("date-range-input__picker"),
8866
- dateRangePickerProps?.className
8928
+ prefix("date-range-input__popover"),
8929
+ popoverContentProps?.className
8867
8930
  ),
8868
- ...dateRangePickerProps,
8869
- value: deferredDateValue,
8870
- onChange: combineEventHandlers(
8871
- dateRangePickerProps?.onChange,
8872
- handleDatePickerChange
8931
+ side: popoverContentProps?.side ?? "bottom",
8932
+ sideOffset: popoverContentProps?.sideOffset ?? 5,
8933
+ showArrow: popoverContentProps?.showArrow ?? false,
8934
+ onOpenAutoFocus: combineEventHandlers(
8935
+ popoverContentProps?.onOpenAutoFocus,
8936
+ handlePopoverOpenAutoFocus
8873
8937
  ),
8874
- selectionMode,
8875
- month,
8876
- onMonthChange: handleMonthChange,
8877
- disabled: disabled || readOnly || (startInputProps?.disabled || startInputProps?.readOnly) && (endInputProps?.disabled || endInputProps?.readOnly) || dateRangePickerProps?.disabled,
8878
- minDate,
8879
- maxDate,
8880
- minMonth,
8881
- maxMonth,
8882
- minYear,
8883
- maxYear,
8884
- locale: dateFnsLocale,
8885
- monthSelectProps: {
8886
- ...dateRangePickerProps?.monthSelectProps,
8887
- popoverProps: {
8888
- ...dateRangePickerProps?.monthSelectProps?.popoverProps,
8889
- ref: monthSelectMenuRef
8890
- }
8891
- },
8892
- yearSelectProps: {
8893
- ...dateRangePickerProps?.yearSelectProps,
8894
- popoverProps: {
8895
- ...dateRangePickerProps?.yearSelectProps?.popoverProps,
8896
- ref: yearSelectMenuRef
8938
+ onEscapeKeyDown: combineEventHandlers(
8939
+ popoverContentProps?.onEscapeKeyDown,
8940
+ handlePopoverEscapeKeyDown
8941
+ ),
8942
+ onPointerDownOutside: combineEventHandlers(
8943
+ popoverContentProps?.onPointerDownOutside,
8944
+ handlePopoverPointerDownOutside
8945
+ ),
8946
+ onInteractOutside: combineEventHandlers(
8947
+ popoverContentProps?.onInteractOutside,
8948
+ handlePopoverInteractOutside
8949
+ ),
8950
+ onBlur: combineEventHandlers(
8951
+ popoverContentProps?.onBlur,
8952
+ handleControlBlur
8953
+ ),
8954
+ ref: combinedPopoverRef,
8955
+ children: /* @__PURE__ */ jsx(
8956
+ DateRangePicker,
8957
+ {
8958
+ className: cx(
8959
+ prefix("date-range-input__picker"),
8960
+ dateRangePickerProps?.className
8961
+ ),
8962
+ ...dateRangePickerProps,
8963
+ value: deferredDateValue,
8964
+ onChange: combineEventHandlers(
8965
+ dateRangePickerProps?.onChange,
8966
+ handleDatePickerChange
8967
+ ),
8968
+ selectionMode,
8969
+ month,
8970
+ onMonthChange: handleMonthChange,
8971
+ disabled: disabled || loading || readOnly || (startInputProps?.disabled || startInputProps?.readOnly) && (endInputProps?.disabled || endInputProps?.readOnly) || dateRangePickerProps?.disabled,
8972
+ minDate,
8973
+ maxDate,
8974
+ minMonth,
8975
+ maxMonth,
8976
+ minYear,
8977
+ maxYear,
8978
+ locale: dateFnsLocale,
8979
+ monthSelectProps: {
8980
+ ...dateRangePickerProps?.monthSelectProps,
8981
+ popoverProps: {
8982
+ ...dateRangePickerProps?.monthSelectProps?.popoverProps,
8983
+ ref: monthSelectMenuRef
8984
+ }
8985
+ },
8986
+ yearSelectProps: {
8987
+ ...dateRangePickerProps?.yearSelectProps,
8988
+ popoverProps: {
8989
+ ...dateRangePickerProps?.yearSelectProps?.popoverProps,
8990
+ ref: yearSelectMenuRef
8991
+ }
8992
+ }
8897
8993
  }
8898
- }
8994
+ )
8899
8995
  }
8900
8996
  )
8901
- }
8902
- )
8903
- ] })
8904
- ]
8997
+ ] })
8998
+ ]
8999
+ }
9000
+ )
8905
9001
  }
8906
- ) }) });
9002
+ ) });
8907
9003
  });
8908
9004
  const DropdownMenu = DropdownMenu$1.Root;
8909
9005
  const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
@@ -8911,11 +9007,12 @@ const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
8911
9007
  defaultChecked,
8912
9008
  checked: controlledChecked,
8913
9009
  onCheckedChange,
9010
+ onSelect,
8914
9011
  color,
8915
9012
  disabled,
8916
9013
  loading,
8917
- enabledWhenLoading,
8918
9014
  loadingContent,
9015
+ showSpinner,
8919
9016
  iconPlacement,
8920
9017
  actionProps,
8921
9018
  contentProps,
@@ -8932,10 +9029,22 @@ const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
8932
9029
  );
8933
9030
  const handleCheckedChange = useCallback(
8934
9031
  (checked2) => {
8935
- onCheckedChange?.(checked2);
8936
- setChecked(checked2);
9032
+ if (!loading) {
9033
+ onCheckedChange?.(checked2);
9034
+ setChecked(checked2);
9035
+ }
9036
+ },
9037
+ [loading, onCheckedChange, setChecked]
9038
+ );
9039
+ const handleSelect = useCallback(
9040
+ (evt) => {
9041
+ if (loading) {
9042
+ evt.preventDefault();
9043
+ return;
9044
+ }
9045
+ onSelect?.(evt);
8937
9046
  },
8938
- [onCheckedChange, setChecked]
9047
+ [loading, onSelect]
8939
9048
  );
8940
9049
  return /* @__PURE__ */ jsx(
8941
9050
  MenuListItem,
@@ -8944,8 +9053,8 @@ const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
8944
9053
  color,
8945
9054
  disabled,
8946
9055
  loading,
8947
- enabledWhenLoading,
8948
9056
  loadingContent,
9057
+ showSpinner,
8949
9058
  iconPlacement,
8950
9059
  actionProps,
8951
9060
  contentProps,
@@ -8969,6 +9078,7 @@ const DropdownMenuCheckboxItem = forwardRef(function DropdownMenuCheckboxItem2({
8969
9078
  {
8970
9079
  checked,
8971
9080
  onCheckedChange: handleCheckedChange,
9081
+ onSelect: handleSelect,
8972
9082
  disabled,
8973
9083
  ...otherProps,
8974
9084
  className: cx(prefix("dropdown-menu__checkbox-item"), className),
@@ -9065,8 +9175,8 @@ const DropdownMenuItem = forwardRef(function DropdownMenuItem2({
9065
9175
  color,
9066
9176
  disabled,
9067
9177
  loading,
9068
- enabledWhenLoading,
9069
9178
  loadingContent,
9179
+ showSpinner,
9070
9180
  icon,
9071
9181
  iconPlacement,
9072
9182
  href,
@@ -9080,11 +9190,19 @@ const DropdownMenuItem = forwardRef(function DropdownMenuItem2({
9080
9190
  ...otherProps
9081
9191
  }, forwardedRef) {
9082
9192
  const prefix = usePrefix();
9083
- const handleSelect = useCallback(() => {
9084
- if (asLink) {
9085
- window.open(href, target, rel?.split(" ").join(","));
9086
- }
9087
- }, [asLink, href, rel, target]);
9193
+ const handleSelect = useCallback(
9194
+ (evt) => {
9195
+ if (loading) {
9196
+ evt.preventDefault();
9197
+ return;
9198
+ }
9199
+ onSelect?.(evt);
9200
+ if (asLink && !evt.defaultPrevented) {
9201
+ window.open(href, target, rel?.split(" ").join(","));
9202
+ }
9203
+ },
9204
+ [asLink, href, loading, onSelect, rel, target]
9205
+ );
9088
9206
  return /* @__PURE__ */ jsx(
9089
9207
  MenuListItem,
9090
9208
  {
@@ -9093,8 +9211,8 @@ const DropdownMenuItem = forwardRef(function DropdownMenuItem2({
9093
9211
  color,
9094
9212
  disabled,
9095
9213
  loading,
9096
- enabledWhenLoading,
9097
9214
  loadingContent,
9215
+ showSpinner,
9098
9216
  icon,
9099
9217
  iconPlacement,
9100
9218
  href,
@@ -9108,11 +9226,9 @@ const DropdownMenuItem = forwardRef(function DropdownMenuItem2({
9108
9226
  children: /* @__PURE__ */ jsx(
9109
9227
  DropdownMenu$1.Item,
9110
9228
  {
9111
- disabled: disabled || loading && !enabledWhenLoading,
9229
+ disabled,
9112
9230
  ...otherProps,
9113
- onSelect: combineEventHandlers(onSelect, handleSelect, {
9114
- checkDefaultPrevented: true
9115
- }),
9231
+ onSelect: handleSelect,
9116
9232
  className: cx(prefix("dropdown-menu__item"), className),
9117
9233
  ref: forwardedRef
9118
9234
  }
@@ -9142,11 +9258,12 @@ const DropdownMenuRadioGroup = forwardRef(function DropdownMenuRadioGroup2({ lab
9142
9258
  });
9143
9259
  const DropdownMenuRadioItem = forwardRef(function DropdownMenuRadioItem2({
9144
9260
  showRadio = true,
9261
+ onSelect,
9145
9262
  color,
9146
9263
  disabled,
9147
9264
  loading,
9148
- enabledWhenLoading,
9149
9265
  loadingContent,
9266
+ showSpinner,
9150
9267
  iconPlacement,
9151
9268
  actionProps,
9152
9269
  contentProps,
@@ -9157,6 +9274,16 @@ const DropdownMenuRadioItem = forwardRef(function DropdownMenuRadioItem2({
9157
9274
  ...otherProps
9158
9275
  }, forwardedRef) {
9159
9276
  const prefix = usePrefix();
9277
+ const handleSelect = useCallback(
9278
+ (evt) => {
9279
+ if (loading) {
9280
+ evt.preventDefault();
9281
+ return;
9282
+ }
9283
+ onSelect?.(evt);
9284
+ },
9285
+ [loading, onSelect]
9286
+ );
9160
9287
  return /* @__PURE__ */ jsx(
9161
9288
  MenuListItem,
9162
9289
  {
@@ -9164,8 +9291,8 @@ const DropdownMenuRadioItem = forwardRef(function DropdownMenuRadioItem2({
9164
9291
  color,
9165
9292
  disabled,
9166
9293
  loading,
9167
- enabledWhenLoading,
9168
9294
  loadingContent,
9295
+ showSpinner,
9169
9296
  iconPlacement,
9170
9297
  actionProps,
9171
9298
  contentProps,
@@ -9187,6 +9314,7 @@ const DropdownMenuRadioItem = forwardRef(function DropdownMenuRadioItem2({
9187
9314
  DropdownMenu$1.RadioItem,
9188
9315
  {
9189
9316
  disabled,
9317
+ onSelect: handleSelect,
9190
9318
  className: cx(prefix("dropdown-menu__radio-item"), className),
9191
9319
  ref: forwardedRef,
9192
9320
  ...otherProps
@@ -9481,8 +9609,8 @@ const FieldGroup = forwardRef(
9481
9609
  function FieldGroup2({
9482
9610
  asChild,
9483
9611
  className,
9612
+ "aria-label": ariaLabel,
9484
9613
  "aria-labelledby": ariaLabelledBy,
9485
- "aria-describedby": ariaDescribedBy,
9486
9614
  ...otherProps
9487
9615
  }, forwardedRef) {
9488
9616
  const prefix = usePrefix();
@@ -9495,8 +9623,8 @@ const FieldGroup = forwardRef(
9495
9623
  className: cx(prefix("field-group"), className),
9496
9624
  role: "group",
9497
9625
  ...otherProps,
9498
- "aria-labelledby": mergeAriaIds(titleId, ariaLabelledBy),
9499
- "aria-describedby": mergeAriaIds(codeId, ariaDescribedBy),
9626
+ "aria-label": ariaLabel,
9627
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 ? combineAriaIds(codeId, titleId) : void 0),
9500
9628
  ref: forwardedRef
9501
9629
  }
9502
9630
  ) });
@@ -9537,7 +9665,7 @@ const FieldGroupHeader = forwardRef(function FieldGroupHeader2({
9537
9665
  As,
9538
9666
  {
9539
9667
  className: cx(prefix("field-group__header"), className),
9540
- "data-has-code": boolDataAttr(!!code),
9668
+ "data-has-code": boolDataAttr(Boolean(code)),
9541
9669
  ...otherProps,
9542
9670
  ref: forwardedRef,
9543
9671
  children: [
@@ -9561,7 +9689,13 @@ const FieldGroupHeader = forwardRef(function FieldGroupHeader2({
9561
9689
  }
9562
9690
  );
9563
9691
  });
9564
- const FieldGroupTitle = forwardRef(function FieldGroupTitle2({ asChild, level = 2, id, className, ...otherProps }, forwardedRef) {
9692
+ const FieldGroupTitle = forwardRef(function FieldGroupTitle2({
9693
+ as = "div",
9694
+ asChild,
9695
+ id,
9696
+ className,
9697
+ ...otherProps
9698
+ }, forwardedRef) {
9565
9699
  const prefix = usePrefix();
9566
9700
  const generatedId = useId();
9567
9701
  const titleId = id ?? prefix(`field-group-title-${generatedId}`);
@@ -9569,7 +9703,7 @@ const FieldGroupTitle = forwardRef(function FieldGroupTitle2({ asChild, level =
9569
9703
  useEffect(() => {
9570
9704
  setTitleId(titleId);
9571
9705
  }, [setTitleId, titleId]);
9572
- const As = asChild ? Slot : `h${level}`;
9706
+ const As = asChild ? Slot : as;
9573
9707
  return /* @__PURE__ */ jsx(
9574
9708
  As,
9575
9709
  {
@@ -9660,9 +9794,9 @@ const Grid = forwardRef(function Grid2({
9660
9794
  }
9661
9795
  ) });
9662
9796
  });
9663
- const Heading = forwardRef(function Heading2({ asChild, level = 2, className, ...otherProps }, forwardedRef) {
9797
+ const Heading = forwardRef(function Heading2({ as, asChild, level = 2, className, ...otherProps }, forwardedRef) {
9664
9798
  const prefix = usePrefix();
9665
- const As = asChild ? Slot : `h${level}`;
9799
+ const As = asChild ? Slot : as ?? `h${level}`;
9666
9800
  return /* @__PURE__ */ jsx(
9667
9801
  As,
9668
9802
  {
@@ -9703,7 +9837,9 @@ const Keyboard = forwardRef(
9703
9837
  }
9704
9838
  );
9705
9839
  const Link = forwardRef(function Link2({
9840
+ as = "a",
9706
9841
  asChild,
9842
+ type,
9707
9843
  color,
9708
9844
  variant,
9709
9845
  external,
@@ -9717,18 +9853,20 @@ const Link = forwardRef(function Link2({
9717
9853
  const { defaultColor, defaultVariant } = useLinkContext();
9718
9854
  color ??= defaultColor;
9719
9855
  variant ??= defaultVariant;
9720
- const As = asChild ? Slot : "a";
9856
+ const isLink = as === "a" && !asChild;
9857
+ const As = asChild ? Slot : as;
9721
9858
  return /* @__PURE__ */ jsxs(
9722
9859
  As,
9723
9860
  {
9861
+ type: type ?? (as === "button" ? "button" : void 0),
9724
9862
  className: cx(
9725
9863
  prefix("link"),
9726
9864
  variant !== "default" && prefix(`link--${variant}`),
9727
9865
  className
9728
9866
  ),
9729
9867
  "data-accent": color,
9730
- target: external ? "_blank" : void 0,
9731
- rel: external ? "noopener noreferrer" : void 0,
9868
+ target: isLink && external ? "_blank" : void 0,
9869
+ rel: isLink && external ? "noopener noreferrer" : void 0,
9732
9870
  ...otherProps,
9733
9871
  ref: forwardedRef,
9734
9872
  children: [
@@ -9937,7 +10075,7 @@ function transformOptions({
9937
10075
  ...otherOptions
9938
10076
  };
9939
10077
  }
9940
- const NumericInput = forwardRef(function DateInput3({
10078
+ const NumericInput = forwardRef(function NumericInput2({
9941
10079
  defaultValue,
9942
10080
  value,
9943
10081
  valueIsUnformattedString = false,
@@ -10103,7 +10241,7 @@ function validateNumericProps({
10103
10241
  }
10104
10242
  }
10105
10243
  function valueNeedsTransformation(value, valueIsUnformattedString, valueIsInteger, scale) {
10106
- return value != null && valueIsInteger && !!scale && (typeof value !== "string" || valueIsUnformattedString);
10244
+ return value != null && valueIsInteger && Boolean(scale) && (typeof value !== "string" || valueIsUnformattedString);
10107
10245
  }
10108
10246
  function transformIntegerValueWithScale(value, scale) {
10109
10247
  const stringValue = numericToString(value);
@@ -10123,16 +10261,27 @@ function transformNumberFormatValues({ formattedValue, value, floatValue }, valu
10123
10261
  return { formattedValue, stringValue, numberValue: +stringValue };
10124
10262
  }
10125
10263
  const Output = forwardRef(
10126
- function Output2({ className, children, ...otherProps }, forwardedRef) {
10264
+ function Output2({
10265
+ pending,
10266
+ pendingContent,
10267
+ showSpinner = pending,
10268
+ children,
10269
+ className,
10270
+ ...otherProps
10271
+ }, forwardedRef) {
10127
10272
  const prefix = usePrefix();
10128
10273
  return /* @__PURE__ */ jsx(
10129
10274
  Input,
10130
10275
  {
10276
+ showSpinner,
10277
+ "aria-busy": pending || void 0,
10278
+ "aria-disabled": void 0,
10279
+ "aria-invalid": void 0,
10131
10280
  ...otherProps,
10132
10281
  className: cx(prefix("output"), className),
10133
10282
  readOnly: true,
10134
10283
  asChild: true,
10135
- children: /* @__PURE__ */ jsx("output", { ref: forwardedRef, children })
10284
+ children: /* @__PURE__ */ jsx("output", { ref: forwardedRef, children: pending ? pendingContent || children : children })
10136
10285
  }
10137
10286
  );
10138
10287
  }
@@ -10142,6 +10291,8 @@ const Radio = forwardRef(function Radio2({
10142
10291
  status,
10143
10292
  code,
10144
10293
  loading,
10294
+ loadingDescription,
10295
+ showSpinner = loading,
10145
10296
  children,
10146
10297
  rootProps,
10147
10298
  codeProps,
@@ -10151,18 +10302,34 @@ const Radio = forwardRef(function Radio2({
10151
10302
  id,
10152
10303
  disabled,
10153
10304
  readOnly,
10305
+ onClick,
10154
10306
  className,
10155
- "aria-describedby": ariaDescribedBy,
10307
+ "aria-label": ariaLabel,
10308
+ "aria-labelledby": ariaLabelledBy,
10156
10309
  ...otherProps
10157
10310
  }, forwardedRef) {
10158
10311
  const prefix = usePrefix();
10312
+ const [locale7] = useLocale();
10313
+ loadingDescription ??= locale7.Input.loadingDescription;
10159
10314
  const controlContext = useControlContext();
10160
10315
  const generatedId = useId();
10161
- const radioId = id ?? prefix(`radio-${generatedId}`);
10162
- const codeId = codeProps?.id ?? prefix(`control-code-${generatedId}`);
10316
+ const controlId = id ?? prefix(`control-${generatedId}`);
10317
+ const codeId = code && (codeProps?.id ?? prefix(`control-code-${generatedId}`));
10318
+ const labelId = children && (labelProps?.id ?? prefix(`radio-label-${generatedId}`));
10319
+ const loadingDescriptionId = loading && loadingDescription && prefix(`control-loading-${generatedId}`);
10163
10320
  status = controlContext?.status ?? status;
10164
10321
  disabled = controlContext?.disabled || disabled;
10322
+ loading = controlContext?.loading || loading;
10165
10323
  readOnly = controlContext?.readOnly || readOnly;
10324
+ const handleClick = useCallback(
10325
+ (evt) => {
10326
+ if (loading || readOnly) {
10327
+ evt.preventDefault();
10328
+ }
10329
+ },
10330
+ [loading, readOnly]
10331
+ );
10332
+ const combinedLabelIds = combineAriaIds(codeId, labelId);
10166
10333
  return /* @__PURE__ */ jsxs(
10167
10334
  "div",
10168
10335
  {
@@ -10170,7 +10337,7 @@ const Radio = forwardRef(function Radio2({
10170
10337
  ...rootProps,
10171
10338
  className: cx(prefix("radio__root"), rootProps?.className),
10172
10339
  children: [
10173
- code && /* @__PURE__ */ jsx(
10340
+ codeId && /* @__PURE__ */ jsx(
10174
10341
  ControlCode,
10175
10342
  {
10176
10343
  status,
@@ -10183,19 +10350,19 @@ const Radio = forwardRef(function Radio2({
10183
10350
  /* @__PURE__ */ jsx(
10184
10351
  RadioGroup$1.Item,
10185
10352
  {
10186
- id: radioId,
10353
+ id: controlId,
10187
10354
  className: cx(prefix("radio"), className),
10188
10355
  value: value?.toString() ?? "",
10189
10356
  disabled,
10357
+ "data-loading": boolDataAttr(loading),
10190
10358
  "data-readonly": boolDataAttr(readOnly),
10191
- "aria-readonly": readOnly ? "true" : void 0,
10192
10359
  "data-status": status,
10193
- "aria-describedby": mergeAriaIds(
10194
- code != null ? codeId : void 0,
10195
- ariaDescribedBy
10196
- ),
10197
- ref: forwardedRef,
10360
+ "aria-disabled": loading || readOnly || void 0,
10361
+ "aria-label": ariaLabel,
10362
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 && combinedLabelIds !== labelId ? combinedLabelIds : void 0),
10198
10363
  ...otherProps,
10364
+ onClick: combineEventHandlers(onClick, handleClick),
10365
+ ref: forwardedRef,
10199
10366
  children: /* @__PURE__ */ jsx(
10200
10367
  RadioGroup$1.Indicator,
10201
10368
  {
@@ -10205,12 +10372,13 @@ const Radio = forwardRef(function Radio2({
10205
10372
  )
10206
10373
  }
10207
10374
  ),
10208
- children && /* @__PURE__ */ jsx(
10375
+ labelId && /* @__PURE__ */ jsx(
10209
10376
  Label,
10210
10377
  {
10211
- htmlFor: radioId,
10378
+ htmlFor: controlId,
10212
10379
  "data-status": status,
10213
10380
  ...labelProps,
10381
+ id: labelId,
10214
10382
  className: cx(prefix("radio__label"), labelProps?.className),
10215
10383
  containerProps: {
10216
10384
  ...labelProps?.containerProps,
@@ -10222,15 +10390,16 @@ const Radio = forwardRef(function Radio2({
10222
10390
  children
10223
10391
  }
10224
10392
  ),
10225
- loading && /* @__PURE__ */ jsx(
10393
+ showSpinner && /* @__PURE__ */ jsx(
10226
10394
  Spinner,
10227
10395
  {
10228
10396
  "data-status": status,
10229
- "data-disabled": boolDataAttr(disabled),
10397
+ "data-disabled": boolDataAttr(disabled || loading),
10230
10398
  ...spinnerProps,
10231
- className: cx(prefix("checkbox__spinner"), spinnerProps?.className)
10399
+ className: cx(prefix("radio__spinner"), spinnerProps?.className)
10232
10400
  }
10233
- )
10401
+ ),
10402
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription })
10234
10403
  ]
10235
10404
  }
10236
10405
  );
@@ -10243,6 +10412,8 @@ const RadioGroup = forwardRef(function RadioGroup2({
10243
10412
  variant,
10244
10413
  status,
10245
10414
  loading,
10415
+ loadingDescription,
10416
+ showSpinner = loading,
10246
10417
  code,
10247
10418
  showClearButton,
10248
10419
  clearButtonLabel,
@@ -10258,6 +10429,7 @@ const RadioGroup = forwardRef(function RadioGroup2({
10258
10429
  readOnly,
10259
10430
  className,
10260
10431
  children,
10432
+ "aria-label": ariaLabel,
10261
10433
  "aria-labelledby": ariaLabelledBy,
10262
10434
  "aria-describedby": ariaDescribedBy,
10263
10435
  onFocus,
@@ -10267,6 +10439,7 @@ const RadioGroup = forwardRef(function RadioGroup2({
10267
10439
  }, forwardedRef) {
10268
10440
  const prefix = usePrefix();
10269
10441
  const [locale7] = useLocale();
10442
+ loadingDescription ??= locale7.Input.loadingDescription;
10270
10443
  clearButtonLabel ??= locale7.Input.clearButtonLabel;
10271
10444
  const labelId = useFieldLabelId();
10272
10445
  const dataTableColumnLabelId = useDataTableColumnLabelId();
@@ -10276,25 +10449,26 @@ const RadioGroup = forwardRef(function RadioGroup2({
10276
10449
  defaultValue ?? "",
10277
10450
  controlledValue
10278
10451
  );
10279
- const { controlId, codeId } = useSetFieldControl(
10452
+ const { generatedId, controlId, codeId } = useSetFieldControl(
10280
10453
  id,
10281
10454
  "DIV",
10282
10455
  codeProps?.id,
10283
- !!code,
10456
+ Boolean(code),
10284
10457
  required
10285
10458
  );
10459
+ const loadingDescriptionId = loading && loadingDescription && prefix(`control-loading-${generatedId}`);
10286
10460
  const radioGroupRef = useRef(null);
10287
10461
  const isInTableCell = useIsInTableCell();
10288
10462
  inline ??= isInTableCell;
10289
10463
  variant ??= isInTableCell ? "cell" : "default";
10290
10464
  const handleValueChange = useCallback(
10291
10465
  (value2) => {
10292
- if (!readOnly) {
10466
+ if (!loading && !readOnly) {
10293
10467
  setValue(value2);
10294
10468
  onValueChange?.(value2);
10295
10469
  }
10296
10470
  },
10297
- [onValueChange, readOnly, setValue]
10471
+ [loading, onValueChange, readOnly, setValue]
10298
10472
  );
10299
10473
  const setFieldControlFocused = useSetFieldControlFocused();
10300
10474
  const handleControlFocus = useCallback(() => {
@@ -10313,7 +10487,7 @@ const RadioGroup = forwardRef(function RadioGroup2({
10313
10487
  handleValueChange("");
10314
10488
  radioGroupRef.current?.focus();
10315
10489
  }, [handleValueChange]);
10316
- const hasClearButton = !disabled && !readOnly && (showClearButton === true || showClearButton === "auto" && (value?.length ?? 0) > 0);
10490
+ const hasClearButton = !disabled && !loading && !readOnly && (showClearButton === true || showClearButton === "auto" && (value?.length ?? 0) > 0);
10317
10491
  const handleKeyDown = useCallback(
10318
10492
  (evt) => {
10319
10493
  if (hasClearButton && (evt.code === "Delete" || evt.code === "Backspace")) {
@@ -10323,123 +10497,128 @@ const RadioGroup = forwardRef(function RadioGroup2({
10323
10497
  [handleClearButtonClick, hasClearButton]
10324
10498
  );
10325
10499
  const combinedRadioGroupRef = useCombinedRef(radioGroupRef, forwardedRef);
10326
- return /* @__PURE__ */ jsx(ClearContexts, { children: /* @__PURE__ */ jsx(ControlContext.Provider, { value: { variant, status, disabled, readOnly }, children: /* @__PURE__ */ jsxs(
10327
- RadioGroup$1.Root,
10500
+ return /* @__PURE__ */ jsx(ClearContexts, { children: /* @__PURE__ */ jsx(
10501
+ ControlContext.Provider,
10328
10502
  {
10329
- value,
10330
- onValueChange: handleValueChange,
10331
- id: controlId,
10332
- "data-status": status,
10333
- "data-accent": controlStatusToAccent(status),
10334
- "data-variant": variant,
10335
- required,
10336
- disabled,
10337
- className: cx(
10338
- prefix("radio-group"),
10339
- inline && prefix("radio-group--inline"),
10340
- className
10341
- ),
10342
- "aria-readonly": readOnly ? "true" : void 0,
10343
- "aria-labelledby": mergeAriaIds(
10344
- dataTableColumnLabelId,
10345
- labelId,
10346
- ariaLabelledBy
10347
- ),
10348
- "aria-describedby": mergeAriaIds(
10349
- codeId,
10350
- errorMessageIds,
10351
- descriptionIds,
10352
- ariaDescribedBy
10353
- ),
10354
- onFocus: combineEventHandlers(onFocus, handleControlFocus),
10355
- onBlur: combineEventHandlers(onBlur, handleControlBlur),
10356
- onKeyDown: combineEventHandlers(onKeyDown, handleKeyDown),
10357
- ...otherProps,
10358
- ref: combinedRadioGroupRef,
10359
- children: [
10360
- code && /* @__PURE__ */ jsx(
10361
- ControlCode,
10362
- {
10363
- status,
10364
- ...codeProps,
10365
- id: codeId,
10366
- className: cx(prefix("radio-group__code"), codeProps?.className),
10367
- children: code
10368
- }
10369
- ),
10370
- /* @__PURE__ */ jsx(
10371
- "div",
10372
- {
10373
- "data-status": status,
10374
- "data-variant": variant,
10375
- "data-disabled": boolDataAttr(disabled),
10376
- "data-readonly": boolDataAttr(readOnly),
10377
- ...containerProps,
10378
- className: cx(
10379
- prefix("radio-group__container"),
10380
- containerProps?.className
10503
+ value: { variant, status, disabled, loading, readOnly },
10504
+ children: /* @__PURE__ */ jsxs(
10505
+ RadioGroup$1.Root,
10506
+ {
10507
+ value,
10508
+ onValueChange: handleValueChange,
10509
+ id: controlId,
10510
+ "data-status": status,
10511
+ "data-accent": controlStatusToAccent(status),
10512
+ "data-variant": variant,
10513
+ required,
10514
+ disabled,
10515
+ className: cx(
10516
+ prefix("radio-group"),
10517
+ inline && prefix("radio-group--inline"),
10518
+ className
10519
+ ),
10520
+ "aria-disabled": loading || readOnly || void 0,
10521
+ "aria-invalid": status === "invalid" || void 0,
10522
+ "aria-label": ariaLabel,
10523
+ "aria-labelledby": ariaLabelledBy ?? (ariaLabel === void 0 ? combineAriaIds(codeId, labelId ?? dataTableColumnLabelId) : void 0),
10524
+ "aria-describedby": combineAriaIds(
10525
+ loadingDescriptionId,
10526
+ errorMessageIds,
10527
+ ariaDescribedBy,
10528
+ descriptionIds
10529
+ ),
10530
+ onFocus: combineEventHandlers(onFocus, handleControlFocus),
10531
+ onBlur: combineEventHandlers(onBlur, handleControlBlur),
10532
+ onKeyDown: combineEventHandlers(onKeyDown, handleKeyDown),
10533
+ ...otherProps,
10534
+ ref: combinedRadioGroupRef,
10535
+ children: [
10536
+ code && /* @__PURE__ */ jsx(
10537
+ ControlCode,
10538
+ {
10539
+ status,
10540
+ ...codeProps,
10541
+ id: codeId,
10542
+ className: cx(prefix("radio-group__code"), codeProps?.className),
10543
+ children: code
10544
+ }
10381
10545
  ),
10382
- children: /* @__PURE__ */ jsx(ClearContexts, { children })
10383
- }
10384
- ),
10385
- (hasClearButton || loading) && /* @__PURE__ */ jsxs(
10386
- "div",
10387
- {
10388
- "data-status": status,
10389
- "data-variant": variant,
10390
- "data-disabled": boolDataAttr(disabled),
10391
- "data-readonly": boolDataAttr(readOnly),
10392
- ...endContainerProps,
10393
- className: cx(
10394
- prefix("checkbox-group__end-container"),
10395
- endContainerProps?.className
10546
+ /* @__PURE__ */ jsx(
10547
+ "div",
10548
+ {
10549
+ "data-status": status,
10550
+ "data-variant": variant,
10551
+ "data-disabled": boolDataAttr(disabled || loading),
10552
+ "data-readonly": boolDataAttr(readOnly),
10553
+ ...containerProps,
10554
+ className: cx(
10555
+ prefix("radio-group__container"),
10556
+ containerProps?.className
10557
+ ),
10558
+ children: /* @__PURE__ */ jsx(ClearContexts, { children })
10559
+ }
10396
10560
  ),
10397
- children: [
10398
- hasClearButton && /* @__PURE__ */ jsx(
10399
- CloseButton,
10400
- {
10401
- size: "sm",
10402
- label: clearButtonLabel,
10403
- tabIndex: -1,
10404
- circle: true,
10405
- ...clearButtonProps,
10406
- className: cx(
10407
- prefix("radio-group__clear-button"),
10408
- clearButtonProps?.className
10409
- ),
10410
- onClick: combineEventHandlers(
10411
- clearButtonProps?.onClick,
10412
- handleClearButtonClick,
10413
- { checkDefaultPrevented: true }
10414
- ),
10415
- onFocus: combineEventHandlers(
10416
- clearButtonProps?.onFocus,
10417
- handleControlFocus
10561
+ (hasClearButton || showSpinner) && /* @__PURE__ */ jsxs(
10562
+ "div",
10563
+ {
10564
+ "data-status": status,
10565
+ "data-variant": variant,
10566
+ "data-disabled": boolDataAttr(disabled || loading),
10567
+ "data-readonly": boolDataAttr(readOnly),
10568
+ ...endContainerProps,
10569
+ className: cx(
10570
+ prefix("radio-group__end-container"),
10571
+ endContainerProps?.className
10572
+ ),
10573
+ children: [
10574
+ hasClearButton && /* @__PURE__ */ jsx(
10575
+ CloseButton,
10576
+ {
10577
+ size: "sm",
10578
+ label: clearButtonLabel,
10579
+ tabIndex: -1,
10580
+ circle: true,
10581
+ ...clearButtonProps,
10582
+ className: cx(
10583
+ prefix("radio-group__clear-button"),
10584
+ clearButtonProps?.className
10585
+ ),
10586
+ onClick: combineEventHandlers(
10587
+ clearButtonProps?.onClick,
10588
+ handleClearButtonClick,
10589
+ { checkDefaultPrevented: true }
10590
+ ),
10591
+ onFocus: combineEventHandlers(
10592
+ clearButtonProps?.onFocus,
10593
+ handleControlFocus
10594
+ ),
10595
+ onBlur: combineEventHandlers(
10596
+ clearButtonProps?.onBlur,
10597
+ handleControlBlur
10598
+ )
10599
+ }
10418
10600
  ),
10419
- onBlur: combineEventHandlers(
10420
- clearButtonProps?.onBlur,
10421
- handleControlBlur
10422
- )
10423
- }
10424
- ),
10425
- loading && /* @__PURE__ */ jsx(
10426
- Spinner,
10427
- {
10428
- color: controlStatusToAccent(status, "neutral"),
10429
- "data-disabled": boolDataAttr(disabled),
10430
- ...spinnerProps,
10431
- className: cx(
10432
- prefix("checkbox-group__spinner"),
10433
- spinnerProps?.className
10601
+ showSpinner && /* @__PURE__ */ jsx(
10602
+ Spinner,
10603
+ {
10604
+ color: controlStatusToAccent(status, "neutral"),
10605
+ "data-disabled": boolDataAttr(disabled || loading),
10606
+ ...spinnerProps,
10607
+ className: cx(
10608
+ prefix("radio-group__spinner"),
10609
+ spinnerProps?.className
10610
+ )
10611
+ }
10434
10612
  )
10435
- }
10436
- )
10437
- ]
10438
- }
10439
- )
10440
- ]
10613
+ ]
10614
+ }
10615
+ ),
10616
+ loadingDescriptionId && /* @__PURE__ */ jsx(VisuallyHidden, { id: loadingDescriptionId, children: loadingDescription })
10617
+ ]
10618
+ }
10619
+ )
10441
10620
  }
10442
- ) }) });
10621
+ ) });
10443
10622
  });
10444
10623
  const Separator = forwardRef(function Separator2({ className, ...otherProps }, forwardedRef) {
10445
10624
  const prefix = usePrefix();
@@ -10899,7 +11078,7 @@ function TabListScrollButton({ side, onClick }) {
10899
11078
  disabled,
10900
11079
  onClick,
10901
11080
  tabIndex: -1,
10902
- "aria-hidden": "true"
11081
+ "aria-hidden": true
10903
11082
  }
10904
11083
  );
10905
11084
  }
@@ -11088,7 +11267,7 @@ function useIntersectionObserver(element, onIntersectionEntryChange, options) {
11088
11267
  }
11089
11268
  }, [element, onIntersectionEntryChange, options]);
11090
11269
  }
11091
- const MONKEY_PATCHED_HISTORY = Symbol.for("ostack-ui.monkeyPatchedHistory");
11270
+ const MONKEY_PATCHED_HISTORY = /* @__PURE__ */ Symbol.for("ostack-ui.monkeyPatchedHistory");
11092
11271
  const HISTORY_EVENT_TYPES = [
11093
11272
  "popstate",
11094
11273
  "hashchange",
@@ -11375,6 +11554,7 @@ export {
11375
11554
  VisuallyHidden,
11376
11555
  boolDataAttr,
11377
11556
  buildErrorReport,
11557
+ combineAriaIds,
11378
11558
  combineEventHandlers,
11379
11559
  compare,
11380
11560
  compareNumericStrings,
@@ -11389,7 +11569,6 @@ export {
11389
11569
  ignoreFormControlsKeyboardShortcut,
11390
11570
  isNumericStringNegative,
11391
11571
  matchAgainstFilter,
11392
- mergeAriaIds,
11393
11572
  navigate,
11394
11573
  normalizeNumericString,
11395
11574
  numericStringFloatToInt,
@@ -11403,6 +11582,7 @@ export {
11403
11582
  registerKeyboardShortcut,
11404
11583
  setBoolDataAttr,
11405
11584
  setDefaultPrefix,
11585
+ setNativeProperty,
11406
11586
  stableSort,
11407
11587
  stringHash,
11408
11588
  useAlertDialog,