@beweco/aurora-ui 0.6.76 → 0.6.77

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.
package/dist/index.cjs.js CHANGED
@@ -613,6 +613,139 @@ function AreaLineChart(_a) {
613
613
  return jsxRuntime.jsx("div", { className: className, children: content });
614
614
  }
615
615
 
616
+ /**
617
+ * Interacciones que un popover no-modal NO debe tratar como "clic fuera".
618
+ *
619
+ * El problema que resuelve: `useOverlay` de react-aria trata cualquier
620
+ * pulsación fuera del popover como interacción externa y, cuando el popover es
621
+ * el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
622
+ * sobre el `pointerdown` **y** sobre el `click`
623
+ * (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
624
+ * que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
625
+ * clic solo cierra el desplegable.
626
+ *
627
+ * Para un clic en la página de fondo eso es lo correcto: descartar el
628
+ * desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
629
+ * usuario está rellenando un formulario y espera que su clic llegue. Y como los
630
+ * buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
631
+ * tragar — un callejón sin salida del que solo se salía vaciando el campo.
632
+ *
633
+ * La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
634
+ * `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
635
+ * pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
636
+ * pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
637
+ */
638
+ var _a, _b;
639
+ /**
640
+ * Marca un botón como control de cierre de su contenedor. Los popovers de Aura
641
+ * no lo cuentan como interacción externa, así que su pulsación no se pierde.
642
+ */
643
+ var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
644
+ /** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
645
+ var dismissControlProps = (_a = {},
646
+ _a[DISMISS_CONTROL_ATTRIBUTE] = "true",
647
+ _a);
648
+ /**
649
+ * Marca el contenedor de una superficie modal propia (wizard, panel a medida).
650
+ * No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
651
+ * `role="dialog"`, que cuenta igual.
652
+ */
653
+ var CONTAINER_ATTRIBUTE = "data-aura-container";
654
+ /** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
655
+ var containerProps = (_b = {},
656
+ _b[CONTAINER_ATTRIBUTE] = "true",
657
+ _b);
658
+ /**
659
+ * Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
660
+ * los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
661
+ * atributos propios.
662
+ */
663
+ var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
664
+ /** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
665
+ var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
666
+ var matchesAncestor = function (element, selector) {
667
+ if (!element || typeof element.closest !== "function") {
668
+ return false;
669
+ }
670
+ return element.closest(selector) != null;
671
+ };
672
+ /** `true` si el elemento es un control de cierre (o está dentro de uno). */
673
+ var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
674
+ /**
675
+ * `true` si el elemento vive dentro de una superficie modal: un diálogo estándar
676
+ * o un contenedor marcado con `containerProps`.
677
+ *
678
+ * Es la condición que decide si un componente con popover no-modal necesita el
679
+ * predicado de más abajo. Fuera de una superficie así, HeroUI ya resuelve el
680
+ * caso por su cuenta (`ariaShouldCloseOnInteractOutside` cierra el desplegable
681
+ * y devuelve `false`, de modo que la pulsación llega a su destino); solo falla
682
+ * cuando hay un diálogo de por medio, y ahí entra el nuestro.
683
+ */
684
+ var isInsideDismissContainer = function (element) { return matchesAncestor(element, CONTAINER_SELECTOR); };
685
+ /**
686
+ * Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
687
+ * componente con popover no-modal.
688
+ *
689
+ * Devuelve `false` —no es interacción externa— en tres casos:
690
+ *
691
+ * 1. Dentro del propio componente: el popover vive en un portal, así que el
692
+ * campo de búsqueda queda fuera de él y una pulsación sobre el texto se
693
+ * contaba como externa.
694
+ * 2. Sobre un control de cierre del contenedor propio.
695
+ * 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
696
+ * el formulario no es descartar el desplegable.
697
+ *
698
+ * Las exenciones 2 y 3 se limitan al contenedor del propio componente. Un
699
+ * control de cierre suelto en la página —la X de un toast, la de un banner— no
700
+ * tiene nada que ver con este desplegable, así que sigue contando como externo
701
+ * y lo cierra.
702
+ *
703
+ * @param element Elemento donde ha empezado la interacción.
704
+ * @param root Raíz del componente.
705
+ */
706
+ var shouldClosePopoverOnInteractOutside = function (element, root) {
707
+ var _a;
708
+ if (root === null || root === void 0 ? void 0 : root.contains(element)) {
709
+ return false;
710
+ }
711
+ var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
712
+ if (isDismissControl(element)) {
713
+ // Sin contenedor propio no hay a quién eximir: el control de cierre es
714
+ // de otra cosa y su pulsación descarta el desplegable como cualquier otra.
715
+ return container ? !container.contains(element) : true;
716
+ }
717
+ if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
718
+ return true;
719
+ }
720
+ // Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
721
+ return !(container === null || container === void 0 ? void 0 : container.contains(element));
722
+ };
723
+ /**
724
+ * Mezcla las `popoverProps` de un consumidor con el predicado por defecto, para
725
+ * que un componente con popover no-modal no trate como "clic fuera" lo que no lo
726
+ * es (ver `shouldClosePopoverOnInteractOutside`).
727
+ *
728
+ * Llamar solo cuando el componente está dentro de una superficie modal
729
+ * (`isInsideDismissContainer`). Fuera de ella HeroUI trae su propio default y
730
+ * hay que dejárselo: instalar cualquier predicado lo desactiva, porque su mezcla
731
+ * es por truthiness (`@heroui/autocomplete` → `use-autocomplete`).
732
+ *
733
+ * El consumidor puede sustituir el predicado pasando el suyo — es la salida para
734
+ * casos a medida, no la puerta a `() => true`. Pasar `shouldCloseOnInteractOutside:
735
+ * undefined` NO desactiva el default: para eso hay que pasar un predicado propio.
736
+ *
737
+ * @param popoverProps Las que llegan del consumidor, si las hay.
738
+ * @param getRoot Lector de la raíz del componente. Es una función y no un
739
+ * valor porque el `ref` todavía es `null` en el primer
740
+ * render: hay que leerlo cuando ocurre la interacción.
741
+ */
742
+ var withPopoverDismissDefaults = function (popoverProps, getRoot) {
743
+ var _a;
744
+ return (__assign(__assign({}, popoverProps), { shouldCloseOnInteractOutside: (_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.shouldCloseOnInteractOutside) !== null && _a !== void 0 ? _a : (function (element) {
745
+ return shouldClosePopoverOnInteractOutside(element, getRoot());
746
+ }) }));
747
+ };
748
+
616
749
  /** Clases del wrapper del icono: margen derecho y alineación igual para lupa e iconos custom */
617
750
  var ICON_WRAPPER_CLASSNAME = "mr-2 flex shrink-0 items-center [&_svg]:shrink-0";
618
751
  var DEFAULT_ICON = (jsxRuntime.jsx(IconComponent, { icon: "solar:magnifer-outline", className: "text-default-400 pointer-events-none shrink-0", size: "sm", "aria-hidden": true }));
@@ -625,15 +758,39 @@ var DEFAULT_ICON = (jsxRuntime.jsx(IconComponent, { icon: "solar:magnifer-outlin
625
758
  * - labelPlacement: Outside
626
759
  * - Size: sm, md, lg (configurable)
627
760
  * - Icono: lupa por defecto; acepta prop icon para personalizar u ocultar (null).
761
+ *
762
+ * **Dentro de un modal, drawer o contenedor marcado con `containerProps`**, el
763
+ * desplegable deja de contar como "clic fuera" lo que ocurre dentro del propio
764
+ * componente, sobre un control de cierre del contenedor o dentro de ese mismo
765
+ * contenedor: react-aria hace `preventDefault()` sobre esas pulsaciones y el
766
+ * control de destino nunca llegaba a recibir su `onPress` (ver
767
+ * `shouldClosePopoverOnInteractOutside`). Sigue cerrándose, por la vía del
768
+ * `shouldCloseOnBlur` del combobox de HeroUI — no por `onBlurWithin` del
769
+ * overlay, que está gateado por el mismo predicado.
770
+ *
771
+ * **Fuera de un contenedor así no se instala nada**: HeroUI ya resuelve ese caso
772
+ * con `ariaShouldCloseOnInteractOutside`, y como su mezcla es por truthiness,
773
+ * poner un predicado propio lo desactivaría y volvería a tragarse la pulsación.
774
+ *
775
+ * Un consumidor puede sustituir el predicado con su propio
776
+ * `popoverProps.shouldCloseOnInteractOutside`; entonces manda el suyo siempre.
628
777
  */
629
778
  var AuraAutocomplete = function (_a) {
630
- var label = _a.label, id = _a.id, icon = _a.icon, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.variant, variant = _c === void 0 ? "bordered" : _c, _d = _a.radius, radius = _d === void 0 ? "md" : _d, props = __rest(_a, ["label", "id", "icon", "size", "variant", "radius"]);
779
+ var label = _a.label, id = _a.id, icon = _a.icon, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.variant, variant = _c === void 0 ? "bordered" : _c, _d = _a.radius, radius = _d === void 0 ? "md" : _d, popoverProps = _a.popoverProps, props = __rest(_a, ["label", "id", "icon", "size", "variant", "radius", "popoverProps"]);
631
780
  var generatedId = React.useId();
781
+ // El desplegable se renderiza en un portal, así que el campo de búsqueda
782
+ // queda fuera de él. Sin esta raíz el predicado no puede distinguir lo que
783
+ // pasa dentro del componente de un clic real de fuera. Se guarda en estado
784
+ // —y no en un ref— porque de ella depende SI se instala el predicado, y eso
785
+ // hay que decidirlo en render: un ref no dispara el re-render que hace falta.
786
+ var _e = React.useState(null), root = _e[0], setRoot = _e[1];
632
787
  var autoId = id || generatedId;
633
788
  var resolvedIcon = icon === undefined ? DEFAULT_ICON : icon;
634
789
  var hasIcon = resolvedIcon != null;
635
790
  var endContent = hasIcon ? (jsxRuntime.jsx("span", { className: ICON_WRAPPER_CLASSNAME, children: resolvedIcon })) : null;
636
- return (jsxRuntime.jsxs("div", { children: [label && (jsxRuntime.jsx("label", { htmlFor: autoId, className: "block mb-2 text-tiny text-default-600", children: label })), jsxRuntime.jsx(react.Autocomplete, __assign({}, props, { id: autoId, label: undefined, labelPlacement: "outside", variant: variant, size: size, radius: radius, endContent: endContent, classNames: __assign({ base: "[&_[data-slot=input-wrapper][data-focus=true]]:!border-primary-500", popoverContent: "aura-popover-content [&_li[data-hover=true]]:!bg-primary-50 [&_li[data-hover=true]]:!text-default-600 [&_li]:!text-default-500" }, (hasIcon && { selectorButton: "!hidden" })) }))] }));
791
+ return (jsxRuntime.jsxs("div", { ref: setRoot, children: [label && (jsxRuntime.jsx("label", { htmlFor: autoId, className: "block mb-2 text-tiny text-default-600", children: label })), jsxRuntime.jsx(react.Autocomplete, __assign({}, props, { id: autoId, label: undefined, labelPlacement: "outside", variant: variant, size: size, radius: radius, endContent: endContent, popoverProps: isInsideDismissContainer(root)
792
+ ? withPopoverDismissDefaults(popoverProps, function () { return root; })
793
+ : popoverProps, classNames: __assign({ base: "[&_[data-slot=input-wrapper][data-focus=true]]:!border-primary-500", popoverContent: "aura-popover-content [&_li[data-hover=true]]:!bg-primary-50 [&_li[data-hover=true]]:!text-default-600 [&_li]:!text-default-500" }, (hasIcon && { selectorButton: "!hidden" })) }))] }));
637
794
  };
638
795
 
639
796
  /**
@@ -4038,96 +4195,6 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
4038
4195
  }) }), helpSection ? (jsxRuntime.jsx("div", { className: "mt-auto flex flex-col items-center justify-center", children: jsxRuntime.jsx(react.Button, { fullWidth: true, className: "text-default-500 data-[hover=true]:text-default-600", startContent: jsxRuntime.jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: collapsed, children: !collapsed ? (jsxRuntime.jsx("span", { className: "menu-claw-collapsible truncate", children: helpSection.title })) : null }) })) : null] }) })] }));
4039
4196
  });
4040
4197
 
4041
- /**
4042
- * Interacciones que un popover no-modal NO debe tratar como "clic fuera".
4043
- *
4044
- * El problema que resuelve: `useOverlay` de react-aria trata cualquier
4045
- * pulsación fuera del popover como interacción externa y, cuando el popover es
4046
- * el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
4047
- * sobre el `pointerdown` **y** sobre el `click`
4048
- * (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
4049
- * que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
4050
- * clic solo cierra el desplegable.
4051
- *
4052
- * Para un clic en la página de fondo eso es lo correcto: descartar el
4053
- * desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
4054
- * usuario está rellenando un formulario y espera que su clic llegue. Y como los
4055
- * buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
4056
- * tragar — un callejón sin salida del que solo se salía vaciando el campo.
4057
- *
4058
- * La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
4059
- * `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
4060
- * pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
4061
- * pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
4062
- */
4063
- var _a, _b;
4064
- /**
4065
- * Marca un botón como control de cierre de su contenedor. Los popovers de Aura
4066
- * no lo cuentan como interacción externa, así que su pulsación no se pierde.
4067
- */
4068
- var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
4069
- /** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
4070
- var dismissControlProps = (_a = {},
4071
- _a[DISMISS_CONTROL_ATTRIBUTE] = "true",
4072
- _a);
4073
- /**
4074
- * Marca el contenedor de una superficie modal propia (wizard, panel a medida).
4075
- * No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
4076
- * `role="dialog"`, que cuenta igual.
4077
- */
4078
- var CONTAINER_ATTRIBUTE = "data-aura-container";
4079
- /** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
4080
- var containerProps = (_b = {},
4081
- _b[CONTAINER_ATTRIBUTE] = "true",
4082
- _b);
4083
- /**
4084
- * Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
4085
- * los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
4086
- * atributos propios.
4087
- */
4088
- var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
4089
- /** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
4090
- var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
4091
- var matchesAncestor = function (element, selector) {
4092
- if (!element || typeof element.closest !== "function") {
4093
- return false;
4094
- }
4095
- return element.closest(selector) != null;
4096
- };
4097
- /** `true` si el elemento es un control de cierre (o está dentro de uno). */
4098
- var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
4099
- /**
4100
- * Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
4101
- * componente con popover no-modal.
4102
- *
4103
- * Devuelve `false` —no es interacción externa— en tres casos:
4104
- *
4105
- * 1. Dentro del propio componente: el popover vive en un portal, así que el
4106
- * campo de búsqueda queda fuera de él y una pulsación sobre el texto se
4107
- * contaba como externa.
4108
- * 2. Sobre un control de cierre del contenedor.
4109
- * 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
4110
- * el formulario no es descartar el desplegable.
4111
- *
4112
- * @param element Elemento donde ha empezado la interacción.
4113
- * @param root Raíz del componente.
4114
- */
4115
- var shouldClosePopoverOnInteractOutside = function (element, root) {
4116
- var _a;
4117
- if (root === null || root === void 0 ? void 0 : root.contains(element)) {
4118
- return false;
4119
- }
4120
- if (isDismissControl(element)) {
4121
- return false;
4122
- }
4123
- if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
4124
- return true;
4125
- }
4126
- // Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
4127
- var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
4128
- return !(container === null || container === void 0 ? void 0 : container.contains(element));
4129
- };
4130
-
4131
4198
  var StepIndicator = function (_a) {
4132
4199
  var currentStep = _a.currentStep, totalSteps = _a.totalSteps, _b = _a.color, color = _b === void 0 ? "primary" : _b, _c = _a.showStepText, showStepText = _c === void 0 ? true : _c, stepTextFormatter = _a.stepTextFormatter, className = _a.className, props = __rest(_a, ["currentStep", "totalSteps", "color", "showStepText", "stepTextFormatter", "className"]);
4133
4200
  var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
@@ -8976,7 +9043,9 @@ function TagsFilter(_a) {
8976
9043
  var _m = React.useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
8977
9044
  var selectedList = value !== null && value !== void 0 ? value : [];
8978
9045
  var _o = React.useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
8979
- var rootRef = React.useRef(null);
9046
+ // En estado y no en un ref: de la raíz depende SI se instala el predicado
9047
+ // (solo dentro de una superficie modal), y eso se decide en render.
9048
+ var _p = React.useState(null), root = _p[0], setRoot = _p[1];
8980
9049
  React.useEffect(function () {
8981
9050
  if (!onLoadMore || !sentinelNode || !hasMore) {
8982
9051
  return;
@@ -9048,7 +9117,7 @@ function TagsFilter(_a) {
9048
9117
  if (isLoading) {
9049
9118
  return (jsxRuntime.jsx("div", { className: "flex flex-col gap-4 ".concat(className), children: jsxRuntime.jsx("div", { className: "flex justify-center py-4", children: jsxRuntime.jsx(react.Spinner, { size: "sm" }) }) }));
9050
9119
  }
9051
- return (jsxRuntime.jsxs("div", { ref: rootRef, className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxRuntime.jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntime.jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsxRuntime.jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsxRuntime.jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
9120
+ return (jsxRuntime.jsxs("div", { ref: setRoot, className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxRuntime.jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntime.jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsxRuntime.jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsxRuntime.jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
9052
9121
  setInputValue(v);
9053
9122
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
9054
9123
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
@@ -9082,9 +9151,16 @@ function TagsFilter(_a) {
9082
9151
  // click de toda interacción externa, así que su `onPress` no se
9083
9152
  // disparaba y el contenedor no se podía cerrar mientras el
9084
9153
  // desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
9085
- shouldCloseOnInteractOutside: function (element) {
9086
- return shouldClosePopoverOnInteractOutside(element, rootRef.current);
9087
- },
9154
+ //
9155
+ // Solo dentro de una superficie modal: fuera de ella HeroUI ya
9156
+ // resuelve el caso por su cuenta, y como su mezcla es por
9157
+ // truthiness, instalar cualquier predicado lo desactivaría y la
9158
+ // pulsación volvería a perderse.
9159
+ shouldCloseOnInteractOutside: isInsideDismissContainer(root)
9160
+ ? function (element) {
9161
+ return shouldClosePopoverOnInteractOutside(element, root);
9162
+ }
9163
+ : undefined,
9088
9164
  }, listboxProps: {
9089
9165
  className: "max-h-[200px] overflow-y-auto",
9090
9166
  }, className: "w-full", children: function (item) {
@@ -10101,6 +10177,7 @@ exports.isDonutEmpty = isDonutEmpty;
10101
10177
  exports.isExactThemeColor = isExactThemeColor;
10102
10178
  exports.isGroupState = isGroupState;
10103
10179
  exports.isHexColor = isHexColor;
10180
+ exports.isInsideDismissContainer = isInsideDismissContainer;
10104
10181
  exports.isRankedBarListEmpty = isRankedBarListEmpty;
10105
10182
  exports.isSegmentationGroup = isSegmentationGroup;
10106
10183
  exports.parseHslTriplet = parseHslTriplet;
@@ -10114,6 +10191,7 @@ exports.useCloseOnAncestorScroll = useCloseOnAncestorScroll;
10114
10191
  exports.useMediaQuery = useMediaQuery;
10115
10192
  exports.useNavigationLoading = useNavigationLoading;
10116
10193
  exports.useThemeContext = useThemeContext;
10194
+ exports.withPopoverDismissDefaults = withPopoverDismissDefaults;
10117
10195
  Object.keys(react).forEach(function (k) {
10118
10196
  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
10119
10197
  enumerable: true,