@beweco/aurora-ui 0.6.73 → 0.6.74

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
@@ -4014,6 +4014,96 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
4014
4014
  }) }), 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: isCollapsed, children: !isCollapsed ? (jsxRuntime.jsx("span", { className: "menu-claw-collapsible truncate", children: helpSection.title })) : null }) })) : null] }) })] }));
4015
4015
  });
4016
4016
 
4017
+ /**
4018
+ * Interacciones que un popover no-modal NO debe tratar como "clic fuera".
4019
+ *
4020
+ * El problema que resuelve: `useOverlay` de react-aria trata cualquier
4021
+ * pulsación fuera del popover como interacción externa y, cuando el popover es
4022
+ * el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
4023
+ * sobre el `pointerdown` **y** sobre el `click`
4024
+ * (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
4025
+ * que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
4026
+ * clic solo cierra el desplegable.
4027
+ *
4028
+ * Para un clic en la página de fondo eso es lo correcto: descartar el
4029
+ * desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
4030
+ * usuario está rellenando un formulario y espera que su clic llegue. Y como los
4031
+ * buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
4032
+ * tragar — un callejón sin salida del que solo se salía vaciando el campo.
4033
+ *
4034
+ * La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
4035
+ * `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
4036
+ * pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
4037
+ * pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
4038
+ */
4039
+ var _a, _b;
4040
+ /**
4041
+ * Marca un botón como control de cierre de su contenedor. Los popovers de Aura
4042
+ * no lo cuentan como interacción externa, así que su pulsación no se pierde.
4043
+ */
4044
+ var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
4045
+ /** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
4046
+ var dismissControlProps = (_a = {},
4047
+ _a[DISMISS_CONTROL_ATTRIBUTE] = "true",
4048
+ _a);
4049
+ /**
4050
+ * Marca el contenedor de una superficie modal propia (wizard, panel a medida).
4051
+ * No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
4052
+ * `role="dialog"`, que cuenta igual.
4053
+ */
4054
+ var CONTAINER_ATTRIBUTE = "data-aura-container";
4055
+ /** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
4056
+ var containerProps = (_b = {},
4057
+ _b[CONTAINER_ATTRIBUTE] = "true",
4058
+ _b);
4059
+ /**
4060
+ * Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
4061
+ * los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
4062
+ * atributos propios.
4063
+ */
4064
+ var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
4065
+ /** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
4066
+ var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
4067
+ var matchesAncestor = function (element, selector) {
4068
+ if (!element || typeof element.closest !== "function") {
4069
+ return false;
4070
+ }
4071
+ return element.closest(selector) != null;
4072
+ };
4073
+ /** `true` si el elemento es un control de cierre (o está dentro de uno). */
4074
+ var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
4075
+ /**
4076
+ * Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
4077
+ * componente con popover no-modal.
4078
+ *
4079
+ * Devuelve `false` —no es interacción externa— en tres casos:
4080
+ *
4081
+ * 1. Dentro del propio componente: el popover vive en un portal, así que el
4082
+ * campo de búsqueda queda fuera de él y una pulsación sobre el texto se
4083
+ * contaba como externa.
4084
+ * 2. Sobre un control de cierre del contenedor.
4085
+ * 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
4086
+ * el formulario no es descartar el desplegable.
4087
+ *
4088
+ * @param element Elemento donde ha empezado la interacción.
4089
+ * @param root Raíz del componente.
4090
+ */
4091
+ var shouldClosePopoverOnInteractOutside = function (element, root) {
4092
+ var _a;
4093
+ if (root === null || root === void 0 ? void 0 : root.contains(element)) {
4094
+ return false;
4095
+ }
4096
+ if (isDismissControl(element)) {
4097
+ return false;
4098
+ }
4099
+ if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
4100
+ return true;
4101
+ }
4102
+ // Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
4103
+ var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
4104
+ return !(container === null || container === void 0 ? void 0 : container.contains(element));
4105
+ };
4106
+
4017
4107
  var StepIndicator = function (_a) {
4018
4108
  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"]);
4019
4109
  var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
@@ -4197,7 +4287,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
4197
4287
  VerticalSteps.displayName = "VerticalSteps";
4198
4288
 
4199
4289
  var MultiStepSidebar = React.forwardRef(function (_a, ref) {
4200
- var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var onClose = _a.onClose, _b = _a.hideInactiveDescriptions, hideInactiveDescriptions = _b === void 0 ? false : _b, _c = _a.isDismissable, isDismissable = _c === void 0 ? true : _c, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
4290
+ var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var _b = _a.closeTranslation, closeTranslation = _b === void 0 ? "Close" : _b, onClose = _a.onClose, _c = _a.hideInactiveDescriptions, hideInactiveDescriptions = _c === void 0 ? false : _c, _d = _a.isDismissable, isDismissable = _d === void 0 ? true : _d, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "closeTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
4201
4291
  var handleOverlayClick = function (e) {
4202
4292
  if (!isDismissable) {
4203
4293
  return;
@@ -4206,7 +4296,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
4206
4296
  onClose === null || onClose === void 0 ? void 0 : onClose();
4207
4297
  }
4208
4298
  };
4209
- return (jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxRuntime.jsxs("div", __assign({ ref: ref, className: react.cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsxRuntime.jsx("div", { className: react.cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsxRuntime.jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxRuntime.jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsxRuntime.jsx(Button, { isIconOnly: true, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsxRuntime.jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) }), jsxRuntime.jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsxRuntime.jsx("div", { className: "flex w-full justify-center", children: jsxRuntime.jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsxRuntime.jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) }));
4299
+ return (jsxRuntime.jsx("div", __assign({}, containerProps, { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxRuntime.jsxs("div", __assign({ ref: ref, className: react.cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsxRuntime.jsx("div", { className: react.cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsxRuntime.jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxRuntime.jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsxRuntime.jsx(Button, __assign({ isIconOnly: true }, dismissControlProps, { "aria-label": closeTranslation, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsxRuntime.jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) })), jsxRuntime.jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsxRuntime.jsx("div", { className: "flex w-full justify-center", children: jsxRuntime.jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsxRuntime.jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) })));
4210
4300
  });
4211
4301
  MultiStepSidebar.displayName = "MultiStepSidebar";
4212
4302
 
@@ -4233,6 +4323,7 @@ var MultiStepWizard = function (_a) {
4233
4323
  cancel: "Cancel",
4234
4324
  next: "Next",
4235
4325
  complete: "Complete",
4326
+ close: "Close",
4236
4327
  }, translations);
4237
4328
  var paginate = React.useCallback(function (newDirection) {
4238
4329
  setPage(function (prev) {
@@ -4284,14 +4375,11 @@ var MultiStepWizard = function (_a) {
4284
4375
  if (!isOpen) {
4285
4376
  return null;
4286
4377
  }
4287
- return (jsxRuntime.jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsxRuntime.jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsxRuntime.jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsxRuntime.jsx(MultistepNavigationButtons, { backButtonProps: {
4378
+ return (jsxRuntime.jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, closeTranslation: t.close, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsxRuntime.jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsxRuntime.jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsxRuntime.jsx(MultistepNavigationButtons, { backButtonProps: {
4288
4379
  isDisabled: page === 0,
4289
4380
  onPress: onBack,
4290
4381
  children: t.goBack,
4291
- }, cancelButtonProps: {
4292
- onPress: onClose,
4293
- children: t.cancel,
4294
- }, nextButtonProps: {
4382
+ }, cancelButtonProps: __assign(__assign({}, dismissControlProps), { onPress: onClose, children: t.cancel }), nextButtonProps: {
4295
4383
  children: getButtonText(),
4296
4384
  onPress: handleNextAction,
4297
4385
  isDisabled: steps[page].isStepValid === false,
@@ -8864,6 +8952,7 @@ function TagsFilter(_a) {
8864
8952
  var _m = React.useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
8865
8953
  var selectedList = value !== null && value !== void 0 ? value : [];
8866
8954
  var _o = React.useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
8955
+ var rootRef = React.useRef(null);
8867
8956
  React.useEffect(function () {
8868
8957
  if (!onLoadMore || !sentinelNode || !hasMore) {
8869
8958
  return;
@@ -8935,7 +9024,7 @@ function TagsFilter(_a) {
8935
9024
  if (isLoading) {
8936
9025
  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" }) }) }));
8937
9026
  }
8938
- return (jsxRuntime.jsxs("div", { 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) {
9027
+ 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) {
8939
9028
  setInputValue(v);
8940
9029
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8941
9030
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
@@ -8954,7 +9043,24 @@ function TagsFilter(_a) {
8954
9043
  // intercepts pointer events, blocking the parent modal's close button.
8955
9044
  // shouldCloseOnInteractOutside already handles closing on outside clicks.
8956
9045
  isNonModal: true,
8957
- shouldCloseOnInteractOutside: function () { return true; },
9046
+ // El desplegable se renderiza en un portal, así que el campo de
9047
+ // búsqueda queda FUERA de él y una pulsación sobre el texto contaba
9048
+ // como interacción externa. Al cerrarse, el FocusScope devolvía el
9049
+ // foco con un `.focus()` que abortaba el gesto de selección que el
9050
+ // navegador acababa de iniciar: de ahí que arrastrar o hacer doble
9051
+ // clic no seleccionara nada y solo quedara borrar letra a letra
9052
+ // (con el teclado sí funcionaba, porque no pasa por aquí).
9053
+ // Las pulsaciones dentro del componente dejan de contar como
9054
+ // externas; las de fuera siguen cerrando el desplegable igual.
9055
+ //
9056
+ // Los controles de cierre del contenedor también quedan exentos:
9057
+ // react-aria hace `preventDefault()` sobre el pointerdown Y el
9058
+ // click de toda interacción externa, así que su `onPress` no se
9059
+ // disparaba y el contenedor no se podía cerrar mientras el
9060
+ // desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
9061
+ shouldCloseOnInteractOutside: function (element) {
9062
+ return shouldClosePopoverOnInteractOutside(element, rootRef.current);
9063
+ },
8958
9064
  }, listboxProps: {
8959
9065
  className: "max-h-[200px] overflow-y-auto",
8960
9066
  }, className: "w-full", children: function (item) {
@@ -9719,6 +9825,7 @@ exports.AuraToastProvider = AuraToastProvider;
9719
9825
  exports.BEWEOS_THEME_MODE_COOKIE_NAME = BEWEOS_THEME_MODE_COOKIE_NAME;
9720
9826
  exports.BreadcrumbsComponent = BreadcrumbsComponent;
9721
9827
  exports.Button = Button;
9828
+ exports.CONTAINER_ATTRIBUTE = CONTAINER_ATTRIBUTE;
9722
9829
  exports.Card = Card;
9723
9830
  exports.Chip = Chip;
9724
9831
  exports.ColorPicker = ColorPicker;
@@ -9728,6 +9835,7 @@ exports.Currency = Currency;
9728
9835
  exports.DEFAULT_DONUT_COLORS = DEFAULT_DONUT_COLORS;
9729
9836
  exports.DEFAULT_PREDEFINED_COLORS = DEFAULT_PREDEFINED_COLORS;
9730
9837
  exports.DEFAULT_RANKED_BAR_COLORS = DEFAULT_RANKED_BAR_COLORS;
9838
+ exports.DISMISS_CONTROL_ATTRIBUTE = DISMISS_CONTROL_ATTRIBUTE;
9731
9839
  exports.DatePicker = DatePicker;
9732
9840
  exports.DateRangePicker = DateRangePicker;
9733
9841
  exports.DateSelector = DateSelector;
@@ -9801,10 +9909,12 @@ exports.computeBars = computeBars;
9801
9909
  exports.computeMax = computeMax;
9802
9910
  exports.computeSlices = computeSlices;
9803
9911
  exports.computeTotal = computeTotal;
9912
+ exports.containerProps = containerProps;
9804
9913
  exports.createCurrencyFormatter = createCurrencyFormatter;
9805
9914
  exports.defaultCountries = uniqueCountries;
9806
9915
  exports.defaultCurrencyOptions = defaultCurrencyOptions;
9807
9916
  exports.defaultTranslations = defaultTranslations$5;
9917
+ exports.dismissControlProps = dismissControlProps;
9808
9918
  exports.forceLightOnlyThemeBeforeReact = forceLightOnlyThemeBeforeReact;
9809
9919
  exports.formatAuroraThemeTooltip = formatAuroraThemeTooltip;
9810
9920
  exports.generateThemeColorScale = generateThemeColorScale;
@@ -9814,6 +9924,7 @@ exports.getSelectedKeyFromPath = getSelectedKeyFromPath;
9814
9924
  exports.hexToThemeColor = hexToThemeColor;
9815
9925
  exports.hslToCssValue = hslToCssValue;
9816
9926
  exports.isAuroraFullThemeId = isAuroraFullThemeId;
9927
+ exports.isDismissControl = isDismissControl;
9817
9928
  exports.isDonutEmpty = isDonutEmpty;
9818
9929
  exports.isExactThemeColor = isExactThemeColor;
9819
9930
  exports.isGroupState = isGroupState;
@@ -9821,6 +9932,7 @@ exports.isHexColor = isHexColor;
9821
9932
  exports.isRankedBarListEmpty = isRankedBarListEmpty;
9822
9933
  exports.isSegmentationGroup = isSegmentationGroup;
9823
9934
  exports.removeCustomPrimaryColor = removeCustomPrimaryColor;
9935
+ exports.shouldClosePopoverOnInteractOutside = shouldClosePopoverOnInteractOutside;
9824
9936
  exports.sizeMap = sizeMap;
9825
9937
  exports.themeColors = themeColors;
9826
9938
  exports.useAuraToast = useAuraToast;
package/dist/index.esm.js CHANGED
@@ -4015,6 +4015,96 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
4015
4015
  }) }), helpSection ? (jsx("div", { className: "mt-auto flex flex-col items-center justify-center", children: jsx(Button$1, { fullWidth: true, className: "text-default-500 data-[hover=true]:text-default-600", startContent: jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: isCollapsed, children: !isCollapsed ? (jsx("span", { className: "menu-claw-collapsible truncate", children: helpSection.title })) : null }) })) : null] }) })] }));
4016
4016
  });
4017
4017
 
4018
+ /**
4019
+ * Interacciones que un popover no-modal NO debe tratar como "clic fuera".
4020
+ *
4021
+ * El problema que resuelve: `useOverlay` de react-aria trata cualquier
4022
+ * pulsación fuera del popover como interacción externa y, cuando el popover es
4023
+ * el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
4024
+ * sobre el `pointerdown` **y** sobre el `click`
4025
+ * (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
4026
+ * que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
4027
+ * clic solo cierra el desplegable.
4028
+ *
4029
+ * Para un clic en la página de fondo eso es lo correcto: descartar el
4030
+ * desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
4031
+ * usuario está rellenando un formulario y espera que su clic llegue. Y como los
4032
+ * buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
4033
+ * tragar — un callejón sin salida del que solo se salía vaciando el campo.
4034
+ *
4035
+ * La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
4036
+ * `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
4037
+ * pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
4038
+ * pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
4039
+ */
4040
+ var _a, _b;
4041
+ /**
4042
+ * Marca un botón como control de cierre de su contenedor. Los popovers de Aura
4043
+ * no lo cuentan como interacción externa, así que su pulsación no se pierde.
4044
+ */
4045
+ var DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
4046
+ /** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
4047
+ var dismissControlProps = (_a = {},
4048
+ _a[DISMISS_CONTROL_ATTRIBUTE] = "true",
4049
+ _a);
4050
+ /**
4051
+ * Marca el contenedor de una superficie modal propia (wizard, panel a medida).
4052
+ * No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
4053
+ * `role="dialog"`, que cuenta igual.
4054
+ */
4055
+ var CONTAINER_ATTRIBUTE = "data-aura-container";
4056
+ /** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
4057
+ var containerProps = (_b = {},
4058
+ _b[CONTAINER_ATTRIBUTE] = "true",
4059
+ _b);
4060
+ /**
4061
+ * Selector de controles de cierre. Incluye `[aria-label="Close"]` para cubrir
4062
+ * los botones de cerrar internos de HeroUI (Modal, Drawer), que no admiten
4063
+ * atributos propios.
4064
+ */
4065
+ var DISMISS_CONTROL_SELECTOR = "[".concat(DISMISS_CONTROL_ATTRIBUTE, "],[aria-label=\"Close\"]");
4066
+ /** Selector del contenedor modal: el marcado de Aura o un diálogo estándar. */
4067
+ var CONTAINER_SELECTOR = "[".concat(CONTAINER_ATTRIBUTE, "],[role=\"dialog\"],[role=\"alertdialog\"]");
4068
+ var matchesAncestor = function (element, selector) {
4069
+ if (!element || typeof element.closest !== "function") {
4070
+ return false;
4071
+ }
4072
+ return element.closest(selector) != null;
4073
+ };
4074
+ /** `true` si el elemento es un control de cierre (o está dentro de uno). */
4075
+ var isDismissControl = function (element) { return matchesAncestor(element, DISMISS_CONTROL_SELECTOR); };
4076
+ /**
4077
+ * Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
4078
+ * componente con popover no-modal.
4079
+ *
4080
+ * Devuelve `false` —no es interacción externa— en tres casos:
4081
+ *
4082
+ * 1. Dentro del propio componente: el popover vive en un portal, así que el
4083
+ * campo de búsqueda queda fuera de él y una pulsación sobre el texto se
4084
+ * contaba como externa.
4085
+ * 2. Sobre un control de cierre del contenedor.
4086
+ * 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
4087
+ * el formulario no es descartar el desplegable.
4088
+ *
4089
+ * @param element Elemento donde ha empezado la interacción.
4090
+ * @param root Raíz del componente.
4091
+ */
4092
+ var shouldClosePopoverOnInteractOutside = function (element, root) {
4093
+ var _a;
4094
+ if (root === null || root === void 0 ? void 0 : root.contains(element)) {
4095
+ return false;
4096
+ }
4097
+ if (isDismissControl(element)) {
4098
+ return false;
4099
+ }
4100
+ if (!matchesAncestor(element, CONTAINER_SELECTOR)) {
4101
+ return true;
4102
+ }
4103
+ // Solo exime el contenedor propio: un diálogo distinto sigue siendo externo.
4104
+ var container = (_a = root === null || root === void 0 ? void 0 : root.closest) === null || _a === void 0 ? void 0 : _a.call(root, CONTAINER_SELECTOR);
4105
+ return !(container === null || container === void 0 ? void 0 : container.contains(element));
4106
+ };
4107
+
4018
4108
  var StepIndicator = function (_a) {
4019
4109
  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"]);
4020
4110
  var progressPercentage = Math.min((currentStep / totalSteps) * 100, 100);
@@ -4198,7 +4288,7 @@ var VerticalSteps = React.forwardRef(function (_a, ref) {
4198
4288
  VerticalSteps.displayName = "VerticalSteps";
4199
4289
 
4200
4290
  var MultiStepSidebar = React.forwardRef(function (_a, ref) {
4201
- var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var onClose = _a.onClose, _b = _a.hideInactiveDescriptions, hideInactiveDescriptions = _b === void 0 ? false : _b, _c = _a.isDismissable, isDismissable = _c === void 0 ? true : _c, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
4291
+ var children = _a.children, className = _a.className, currentPage = _a.currentPage; _a.onBack; _a.onNext; var onChangePage = _a.onChangePage, steps = _a.steps; _a.goBackTranslation; var _b = _a.closeTranslation, closeTranslation = _b === void 0 ? "Close" : _b, onClose = _a.onClose, _c = _a.hideInactiveDescriptions, hideInactiveDescriptions = _c === void 0 ? false : _c, _d = _a.isDismissable, isDismissable = _d === void 0 ? true : _d, props = __rest(_a, ["children", "className", "currentPage", "onBack", "onNext", "onChangePage", "steps", "goBackTranslation", "closeTranslation", "onClose", "hideInactiveDescriptions", "isDismissable"]);
4202
4292
  var handleOverlayClick = function (e) {
4203
4293
  if (!isDismissable) {
4204
4294
  return;
@@ -4207,7 +4297,7 @@ var MultiStepSidebar = React.forwardRef(function (_a, ref) {
4207
4297
  onClose === null || onClose === void 0 ? void 0 : onClose();
4208
4298
  }
4209
4299
  };
4210
- return (jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxs("div", __assign({ ref: ref, className: cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsx("div", { className: cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsx(Button, { isIconOnly: true, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) }), jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsx("div", { className: "flex w-full justify-center", children: jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) }));
4300
+ return (jsx("div", __assign({}, containerProps, { className: "fixed inset-0 z-50 flex items-center justify-center bg-content3/50 backdrop-blur-sm", onClick: handleOverlayClick, children: jsxs("div", __assign({ ref: ref, className: cn("relative flex h-full w-full max-w-4xl overflow-hidden rounded-lg bg-background shadow-lg lg:h-auto lg:max-h-[85vh] lg:min-h-[512px]", className) }, props, { children: [jsx("div", { className: cn("absolute inset-y-0 left-0 hidden w-1/3 flex-col justify-start gap-y-8 overflow-y-auto p-8 md:flex [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"), children: jsx(VerticalSteps, { className: "aura-stepper-theme", color: "primary", currentStep: currentPage, steps: steps, onStepChange: onChangePage, hideInactiveDescriptions: hideInactiveDescriptions }) }), jsxs("div", { className: "relative flex w-full flex-col items-center justify-between gap-4 md:ml-[33.333333%] md:w-2/3 md:p-4 min-h-0", children: [jsx(Button, __assign({ isIconOnly: true }, dismissControlProps, { "aria-label": closeTranslation, className: "absolute right-4 top-4", size: "sm", variant: "light", color: "default", onPress: onClose, startContent: jsx(IconComponent, { className: "text-foreground", icon: "material-symbols:close-rounded", size: "lg" }) })), jsx("div", { className: "pt-9 w-10/12 md:hidden", children: jsx("div", { className: "flex w-full justify-center", children: jsx(StepIndicator, { className: "aura-stepper-theme", currentStep: currentPage + 1, totalSteps: steps.length }) }) }), jsx("div", { className: "flex flex-col flex-1 w-full justify-between p-4 sm:max-w-md md:max-w-lg overflow-y-auto min-h-0 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: children })] })] })) })));
4211
4301
  });
4212
4302
  MultiStepSidebar.displayName = "MultiStepSidebar";
4213
4303
 
@@ -4234,6 +4324,7 @@ var MultiStepWizard = function (_a) {
4234
4324
  cancel: "Cancel",
4235
4325
  next: "Next",
4236
4326
  complete: "Complete",
4327
+ close: "Close",
4237
4328
  }, translations);
4238
4329
  var paginate = React.useCallback(function (newDirection) {
4239
4330
  setPage(function (prev) {
@@ -4285,14 +4376,11 @@ var MultiStepWizard = function (_a) {
4285
4376
  if (!isOpen) {
4286
4377
  return null;
4287
4378
  }
4288
- return (jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxs("div", { children: [jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsx(MultistepNavigationButtons, { backButtonProps: {
4379
+ return (jsxs(MultiStepSidebar, { currentPage: page, goBackTranslation: t.goBack, closeTranslation: t.close, steps: steps, onBack: onBack, onChangePage: onChangePage, onClose: onClose, onNext: onNext, hideInactiveDescriptions: hideInactiveDescriptions, isDismissable: isDismissable, children: [jsxs("div", { children: [jsx(Button, { className: "w-fit text-default-600 mb-6", color: "default", variant: "light", onPress: onBack, isDisabled: page === 0, startContent: jsx(IconComponent, { className: "text-default-500", icon: "material-symbols:arrow-back-rounded", size: "sm" }), children: t.goBack || "Back" }), jsx("div", { className: "relative flex h-fit w-full flex-col text-center lg:justify-center lg:pt-0", children: content })] }), jsx(MultistepNavigationButtons, { backButtonProps: {
4289
4380
  isDisabled: page === 0,
4290
4381
  onPress: onBack,
4291
4382
  children: t.goBack,
4292
- }, cancelButtonProps: {
4293
- onPress: onClose,
4294
- children: t.cancel,
4295
- }, nextButtonProps: {
4383
+ }, cancelButtonProps: __assign(__assign({}, dismissControlProps), { onPress: onClose, children: t.cancel }), nextButtonProps: {
4296
4384
  children: getButtonText(),
4297
4385
  onPress: handleNextAction,
4298
4386
  isDisabled: steps[page].isStepValid === false,
@@ -8865,6 +8953,7 @@ function TagsFilter(_a) {
8865
8953
  var _m = useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
8866
8954
  var selectedList = value !== null && value !== void 0 ? value : [];
8867
8955
  var _o = useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
8956
+ var rootRef = useRef(null);
8868
8957
  useEffect(function () {
8869
8958
  if (!onLoadMore || !sentinelNode || !hasMore) {
8870
8959
  return;
@@ -8936,7 +9025,7 @@ function TagsFilter(_a) {
8936
9025
  if (isLoading) {
8937
9026
  return (jsx("div", { className: "flex flex-col gap-4 ".concat(className), children: jsx("div", { className: "flex justify-center py-4", children: jsx(Spinner, { size: "sm" }) }) }));
8938
9027
  }
8939
- return (jsxs("div", { className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxs(Fragment, { children: [jsxs("div", { className: "flex flex-col gap-3", children: [jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
9028
+ return (jsxs("div", { ref: rootRef, className: "flex flex-col gap-4 ".concat(className), children: [error && (jsxs("div", { className: "text-danger text-small py-2", children: [t.errorLoadingPrefix, ": ", error] })), !error && (jsxs(Fragment, { children: [jsxs("div", { className: "flex flex-col gap-3", children: [jsxs(H4, { className: "text-tiny text-left text-default-700", children: [t.labelSelect, required && jsx("span", { className: "text-danger ml-0.5", children: "*" })] }), jsx(AuraAutocomplete, { placeholder: t.placeholder, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t.placeholder, inputValue: inputValue, onInputChange: function (v) {
8940
9029
  setInputValue(v);
8941
9030
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
8942
9031
  }, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
@@ -8955,7 +9044,24 @@ function TagsFilter(_a) {
8955
9044
  // intercepts pointer events, blocking the parent modal's close button.
8956
9045
  // shouldCloseOnInteractOutside already handles closing on outside clicks.
8957
9046
  isNonModal: true,
8958
- shouldCloseOnInteractOutside: function () { return true; },
9047
+ // El desplegable se renderiza en un portal, así que el campo de
9048
+ // búsqueda queda FUERA de él y una pulsación sobre el texto contaba
9049
+ // como interacción externa. Al cerrarse, el FocusScope devolvía el
9050
+ // foco con un `.focus()` que abortaba el gesto de selección que el
9051
+ // navegador acababa de iniciar: de ahí que arrastrar o hacer doble
9052
+ // clic no seleccionara nada y solo quedara borrar letra a letra
9053
+ // (con el teclado sí funcionaba, porque no pasa por aquí).
9054
+ // Las pulsaciones dentro del componente dejan de contar como
9055
+ // externas; las de fuera siguen cerrando el desplegable igual.
9056
+ //
9057
+ // Los controles de cierre del contenedor también quedan exentos:
9058
+ // react-aria hace `preventDefault()` sobre el pointerdown Y el
9059
+ // click de toda interacción externa, así que su `onPress` no se
9060
+ // disparaba y el contenedor no se podía cerrar mientras el
9061
+ // desplegable estuviera abierto (ver `shouldClosePopoverOnInteractOutside`).
9062
+ shouldCloseOnInteractOutside: function (element) {
9063
+ return shouldClosePopoverOnInteractOutside(element, rootRef.current);
9064
+ },
8959
9065
  }, listboxProps: {
8960
9066
  className: "max-h-[200px] overflow-y-auto",
8961
9067
  }, className: "w-full", children: function (item) {
@@ -9699,4 +9805,4 @@ var NavigationLoadingProvider = function (_a) {
9699
9805
  return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
9700
9806
  };
9701
9807
 
9702
- export { ALL_THEMES, AURORA_THEME_FAMILIES, AURORA_THEME_REGISTRY, AccordionList, AddHolidayForm, AnalyticsCard, AreaLineChart, AuraAutocomplete, AuraTable, AuraToastProvider, BEWEOS_THEME_MODE_COOKIE_NAME, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, Currency, DEFAULT_DONUT_COLORS, DEFAULT_PREDEFINED_COLORS, DEFAULT_RANKED_BAR_COLORS, DatePicker, DateRangePicker, DateSelector, DonutChart, DrawerFilters, EmailPreview, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, InputPassword, Kanban, KanbanCard, KanbanColumn, LindaIcon, MenuClaw, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, REGISTERED_THEME_COLORS, RangeFilter, RankedBarList, RowSteps, DEFAULT_TRANSLATIONS$1 as SEGMENTATION_DEFAULT_TRANSLATIONS, ScheduleRow, SearchInput, SegmentationBuilder, Select, SimpleLineChart, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StatTile, StepIndicator, Switch as SwitchComponent, THEME_COLOR_HEX_MAP, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, Tooltip, TwoColumnLayoutAgent, UploadFile, VerticalSteps, ViolinPlot, WhatsAppPreview, Wizard, WizardNavigation, WizardSidebar, applyCustomPrimaryColor, computeBars, computeMax, computeSlices, computeTotal, createCurrencyFormatter, uniqueCountries as defaultCountries, defaultCurrencyOptions, defaultTranslations$5 as defaultTranslations, forceLightOnlyThemeBeforeReact, formatAuroraThemeTooltip, generateThemeColorScale, getContrastForeground, getRegisteredThemeColorBases, getSelectedKeyFromPath, hexToThemeColor, hslToCssValue, isAuroraFullThemeId, isDonutEmpty, isExactThemeColor, isGroupState, isHexColor, isRankedBarListEmpty, isSegmentationGroup, removeCustomPrimaryColor, sizeMap, themeColors, useAuraToast, useCloseOnAncestorScroll, useMediaQuery, useNavigationLoading, useThemeContext };
9808
+ export { ALL_THEMES, AURORA_THEME_FAMILIES, AURORA_THEME_REGISTRY, AccordionList, AddHolidayForm, AnalyticsCard, AreaLineChart, AuraAutocomplete, AuraTable, AuraToastProvider, BEWEOS_THEME_MODE_COOKIE_NAME, BreadcrumbsComponent, Button, CONTAINER_ATTRIBUTE, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, Currency, DEFAULT_DONUT_COLORS, DEFAULT_PREDEFINED_COLORS, DEFAULT_RANKED_BAR_COLORS, DISMISS_CONTROL_ATTRIBUTE, DatePicker, DateRangePicker, DateSelector, DonutChart, DrawerFilters, EmailPreview, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, InputPassword, Kanban, KanbanCard, KanbanColumn, LindaIcon, MenuClaw, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, REGISTERED_THEME_COLORS, RangeFilter, RankedBarList, RowSteps, DEFAULT_TRANSLATIONS$1 as SEGMENTATION_DEFAULT_TRANSLATIONS, ScheduleRow, SearchInput, SegmentationBuilder, Select, SimpleLineChart, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StatTile, StepIndicator, Switch as SwitchComponent, THEME_COLOR_HEX_MAP, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, Tooltip, TwoColumnLayoutAgent, UploadFile, VerticalSteps, ViolinPlot, WhatsAppPreview, Wizard, WizardNavigation, WizardSidebar, applyCustomPrimaryColor, computeBars, computeMax, computeSlices, computeTotal, containerProps, createCurrencyFormatter, uniqueCountries as defaultCountries, defaultCurrencyOptions, defaultTranslations$5 as defaultTranslations, dismissControlProps, forceLightOnlyThemeBeforeReact, formatAuroraThemeTooltip, generateThemeColorScale, getContrastForeground, getRegisteredThemeColorBases, getSelectedKeyFromPath, hexToThemeColor, hslToCssValue, isAuroraFullThemeId, isDismissControl, isDonutEmpty, isExactThemeColor, isGroupState, isHexColor, isRankedBarListEmpty, isSegmentationGroup, removeCustomPrimaryColor, shouldClosePopoverOnInteractOutside, sizeMap, themeColors, useAuraToast, useCloseOnAncestorScroll, useMediaQuery, useNavigationLoading, useThemeContext };
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStepWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,eAAO,MAAM,eAAe,GAAI,oHAS7B,oBAAoB,mDA6ItB,CAAC"}
1
+ {"version":3,"file":"MultiStepWizard.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,eAAO,MAAM,eAAe,GAAI,oHAS7B,oBAAoB,mDAmJtB,CAAC"}
@@ -30,5 +30,7 @@ export interface MultiStepWizardTranslations {
30
30
  cancel?: string;
31
31
  next?: string;
32
32
  complete?: string;
33
+ /** Nombre accesible del botón de cerrar (solo icono). Por defecto `"Close"`. */
34
+ close?: string;
33
35
  }
34
36
  //# sourceMappingURL=MultiStepWizard.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStepWizard.types.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"MultiStepWizard.types.d.ts","sourceRoot":"","sources":["../../../../src/components/multi-step-wizard/MultiStepWizard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,IAAI;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStepSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,eAAO,MAAM,gBAAgB,8FA6F5B,CAAC"}
1
+ {"version":3,"file":"MultiStepSidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,eAAO,MAAM,gBAAgB,8FAuG5B,CAAC"}
@@ -9,6 +9,8 @@ export interface MultiStepSidebarProps extends React.HTMLAttributes<HTMLDivEleme
9
9
  onChangePage?: (page: number) => void;
10
10
  steps: Step[];
11
11
  goBackTranslation?: string;
12
+ /** Nombre accesible del botón de cerrar (solo icono). Por defecto `"Close"`. */
13
+ closeTranslation?: string;
12
14
  hideInactiveDescriptions?: boolean;
13
15
  /** Permite cerrar al hacer clic en el backdrop. Por defecto `true`. */
14
16
  isDismissable?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiStepSidebar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,qBAChB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"MultiStepSidebar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/multi-step-wizard/_internal/MultiStepSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,qBAChB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TagsFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EACX,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAuC5B;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACpE,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAiB,EACjB,KAAK,EACL,SAAiB,EACjB,SAAc,EACd,YAAY,EAAE,SAAS,EACvB,QAAgB,EAChB,WAA2D,EAC3D,SAAkD,EAClD,aAAa,EACb,OAAe,EACf,aAAqB,EACrB,UAAU,EACV,kBAA0B,GAC1B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAiPzC;yBAlQe,UAAU"}
1
+ {"version":3,"file":"TagsFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/tags-filter/TagsFilter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EACX,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAuC5B;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACpE,KAAK,EACL,KAAK,EACL,QAAQ,EACR,YAAiB,EACjB,KAAK,EACL,SAAiB,EACjB,SAAc,EACd,YAAY,EAAE,SAAS,EACvB,QAAgB,EAChB,WAA2D,EAC3D,SAAkD,EAClD,aAAa,EACb,OAAe,EACf,aAAqB,EACrB,UAAU,EACV,kBAA0B,GAC1B,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAkQzC;yBAnRe,UAAU"}
@@ -61,6 +61,7 @@ export * from "./components/range-filter";
61
61
  export * from "./components/simple-line-chart";
62
62
  export * from "./components/segmentation-builder";
63
63
  export * from "./components/tags-filter";
64
+ export * from "./utils/dismiss-control";
64
65
  export * from "./utils/formatters";
65
66
  export { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, type ModalProps, } from "./components/modal";
66
67
  export { AuraAutocomplete, type AuraAutocompleteProps, } from "./components/autocomplete";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAU9B,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACN,KAAK,EACL,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,KAAK,UAAU,GACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACN,gBAAgB,EAChB,KAAK,qBAAqB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACN,UAAU,EACV,KAAK,eAAe,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,eAAe,EACf,KAAK,oBAAoB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACN,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACN,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,GAC9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,EACpC,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GACzB,MAAM,mCAAmC,CAAC;AAG3C,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Interacciones que un popover no-modal NO debe tratar como "clic fuera".
3
+ *
4
+ * El problema que resuelve: `useOverlay` de react-aria trata cualquier
5
+ * pulsación fuera del popover como interacción externa y, cuando el popover es
6
+ * el overlay visible más reciente, hace `stopPropagation()` + `preventDefault()`
7
+ * sobre el `pointerdown` **y** sobre el `click`
8
+ * (`@react-aria/overlays/useOverlay`). El evento nunca llega a su destino, así
9
+ * que `usePress` no registra la pulsación y `onPress` no se dispara: el primer
10
+ * clic solo cierra el desplegable.
11
+ *
12
+ * Para un clic en la página de fondo eso es lo correcto: descartar el
13
+ * desplegable sin activar nada por debajo. Dentro del mismo diálogo no: ahí el
14
+ * usuario está rellenando un formulario y espera que su clic llegue. Y como los
15
+ * buscadores se reabren al recuperar el foco, el clic siguiente se volvía a
16
+ * tragar — un callejón sin salida del que solo se salía vaciando el campo.
17
+ *
18
+ * La única palanca es `shouldCloseOnInteractOutside`: es el guardián de esos dos
19
+ * `preventDefault`. Devolviendo `false` para lo que no es realmente "fuera", la
20
+ * pulsación llega intacta. El desplegable sigue cerrándose igual, pero por
21
+ * pérdida de foco (`shouldCloseOnBlur`) en vez de por interacción externa.
22
+ */
23
+ /**
24
+ * Marca un botón como control de cierre de su contenedor. Los popovers de Aura
25
+ * no lo cuentan como interacción externa, así que su pulsación no se pierde.
26
+ */
27
+ export declare const DISMISS_CONTROL_ATTRIBUTE = "data-aura-dismiss";
28
+ /** Props a esparcir en un control de cierre: `<Button {...dismissControlProps} />`. */
29
+ export declare const dismissControlProps: {
30
+ readonly "data-aura-dismiss": "true";
31
+ };
32
+ /**
33
+ * Marca el contenedor de una superficie modal propia (wizard, panel a medida).
34
+ * No hace falta en `Modal` ni `Drawer`: los diálogos de HeroUI ya traen
35
+ * `role="dialog"`, que cuenta igual.
36
+ */
37
+ export declare const CONTAINER_ATTRIBUTE = "data-aura-container";
38
+ /** Props a esparcir en el contenedor: `<div {...containerProps}>`. */
39
+ export declare const containerProps: {
40
+ readonly "data-aura-container": "true";
41
+ };
42
+ /** `true` si el elemento es un control de cierre (o está dentro de uno). */
43
+ export declare const isDismissControl: (element: Element | null | undefined) => boolean;
44
+ /**
45
+ * Predicado listo para `popoverProps.shouldCloseOnInteractOutside` de un
46
+ * componente con popover no-modal.
47
+ *
48
+ * Devuelve `false` —no es interacción externa— en tres casos:
49
+ *
50
+ * 1. Dentro del propio componente: el popover vive en un portal, así que el
51
+ * campo de búsqueda queda fuera de él y una pulsación sobre el texto se
52
+ * contaba como externa.
53
+ * 2. Sobre un control de cierre del contenedor.
54
+ * 3. Dentro del mismo diálogo/contenedor que el componente: seguir rellenando
55
+ * el formulario no es descartar el desplegable.
56
+ *
57
+ * @param element Elemento donde ha empezado la interacción.
58
+ * @param root Raíz del componente.
59
+ */
60
+ export declare const shouldClosePopoverOnInteractOutside: (element: Element, root: Element | null | undefined) => boolean;
61
+ //# sourceMappingURL=dismiss-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismiss-control.d.ts","sourceRoot":"","sources":["../../../src/utils/dismiss-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,uFAAuF;AACvF,eAAO,MAAM,mBAAmB;;CAEtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,sEAAsE;AACtE,eAAO,MAAM,cAAc;;CAEjB,CAAC;AAsBX,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,GAC5B,SAAS,OAAO,GAAG,IAAI,GAAG,SAAS,KACjC,OAA6D,CAAC;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mCAAmC,GAC/C,SAAS,OAAO,EAChB,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,KAC9B,OAaF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "0.6.73",
3
+ "version": "0.6.74",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",