@beweco/aurora-ui 0.6.52 → 0.6.54

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
@@ -7409,6 +7409,7 @@ var MultiSelectFilter = function (_a) {
7409
7409
  // RANGE FILTER
7410
7410
  // =========================================================================
7411
7411
  var RangeFilterComponent = function (_a) {
7412
+ var _b;
7412
7413
  var filter = _a.filter, value = _a.value, onChange = _a.onChange;
7413
7414
  var currentValue = value || { min: filter.data.min, max: filter.data.max };
7414
7415
  var rangeValue = [currentValue.min, currentValue.max];
@@ -7416,11 +7417,14 @@ var RangeFilterComponent = function (_a) {
7416
7417
  var min = newValue[0], max = newValue[1];
7417
7418
  onChange({ min: min, max: max });
7418
7419
  };
7420
+ var formatter = (_b = filter.data.formatValue) !== null && _b !== void 0 ? _b : (filter.data.unit
7421
+ ? function (val) { return "".concat(val, " ").concat(filter.data.unit); }
7422
+ : function (val) { return val.toString(); });
7419
7423
  // Generate data array for histogram (simple implementation)
7420
7424
  var data = Array.from({
7421
7425
  length: Math.ceil((filter.data.max - filter.data.min) / (filter.data.step || 1)) + 1,
7422
7426
  }, function (_, i) { return filter.data.min + i * (filter.data.step || 1); });
7423
- return (jsxRuntime.jsx(RangeFilter, { title: "Rango de ".concat(filter.title.toLowerCase()), minValue: filter.data.min, maxValue: filter.data.max, step: filter.data.step || 1, data: data, value: rangeValue, onChange: handleChange, className: "w-full", showHistogramCount: filter.data.showHistogramCount }));
7427
+ return (jsxRuntime.jsx(RangeFilter, { title: "Rango de ".concat(filter.title.toLowerCase()), minValue: filter.data.min, maxValue: filter.data.max, step: filter.data.step || 1, data: data, value: rangeValue, onChange: handleChange, formatValue: formatter, className: "w-full", showHistogramCount: filter.data.showHistogramCount }));
7424
7428
  };
7425
7429
  // =========================================================================
7426
7430
  // DATE FILTER
@@ -8422,6 +8426,26 @@ function TagsFilter(_a) {
8422
8426
  }
8423
8427
  TagsFilter.displayName = "TagsFilter";
8424
8428
 
8429
+ /**
8430
+ * Returns a formatValue function for use with RangeFilter/DrawerFilters range type.
8431
+ * Uses Intl.NumberFormat internally — the consumer decides locale, currency, and decimals.
8432
+ *
8433
+ * @example
8434
+ * // COP — no decimals
8435
+ * createCurrencyFormatter("es-CO", "COP")
8436
+ * // EUR — 2 decimals
8437
+ * createCurrencyFormatter("es-ES", "EUR", 2)
8438
+ */
8439
+ var createCurrencyFormatter = function (locale, currency, fractionDigits) {
8440
+ if (fractionDigits === void 0) { fractionDigits = 0; }
8441
+ var formatter = new Intl.NumberFormat(locale, {
8442
+ style: "currency",
8443
+ currency: currency,
8444
+ maximumFractionDigits: fractionDigits,
8445
+ });
8446
+ return function (val) { return formatter.format(val); };
8447
+ };
8448
+
8425
8449
  var Modal = function (props) {
8426
8450
  return (jsxRuntime.jsx(react.Modal, __assign({ shouldBlockScroll: true, radius: "lg", className: "py-9 px-6" }, props)));
8427
8451
  };
@@ -8606,6 +8630,69 @@ var Card = function (_a) {
8606
8630
  return (jsxRuntime.jsx(react.Card, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
8607
8631
  };
8608
8632
 
8633
+ /**
8634
+ * Tooltip - Componente BeweOS basado en HeroUI.
8635
+ *
8636
+ * Añade soporte de tap en dispositivos táctiles: el Tooltip de HeroUI solo
8637
+ * reacciona a hover/focus, lo que lo deja sin respuesta en móvil. Cuando se
8638
+ * detecta un dispositivo táctil, este wrapper lo controla por tap y lo cierra
8639
+ * al tocar fuera o al hacer scroll.
8640
+ */
8641
+ var Tooltip = function (_a) {
8642
+ var _b = _a.enableTapOnTouch, enableTapOnTouch = _b === void 0 ? true : _b, _c = _a.touchPlacement, touchPlacement = _c === void 0 ? "top" : _c, placement = _a.placement, isOpen = _a.isOpen, defaultOpen = _a.defaultOpen, onOpenChange = _a.onOpenChange, children = _a.children, props = __rest(_a, ["enableTapOnTouch", "touchPlacement", "placement", "isOpen", "defaultOpen", "onOpenChange", "children"]);
8643
+ // Detección táctil: NO basta con `(hover: none)`. Muchos móviles (p.ej.
8644
+ // Android) reportan `(hover: hover)` y `(hover: none)` da false, dejando el
8645
+ // tap sin activar. Se combina con `(pointer: coarse)` (coincide si cualquiera
8646
+ // es true): así un teléfono entra en modo tap aunque diga que tiene hover,
8647
+ // mientras que un desktop con ratón (coarse=false, hover=hover) no.
8648
+ var isTouch = useMediaQuery("(hover: none), (pointer: coarse)", false);
8649
+ var isControlled = isOpen !== undefined;
8650
+ var _d = React.useState(defaultOpen !== null && defaultOpen !== void 0 ? defaultOpen : false), internalOpen = _d[0], setInternalOpen = _d[1];
8651
+ var open = isControlled ? isOpen : internalOpen;
8652
+ var triggerRef = React.useRef(null);
8653
+ var setOpen = React.useCallback(function (next) {
8654
+ if (!isControlled) {
8655
+ setInternalOpen(next);
8656
+ }
8657
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(next);
8658
+ }, [isControlled, onOpenChange]);
8659
+ var tapMode = enableTapOnTouch && isTouch;
8660
+ // En modo tap, cerrar al tocar fuera del trigger o al hacer scroll.
8661
+ React.useEffect(function () {
8662
+ if (!(tapMode && open)) {
8663
+ return;
8664
+ }
8665
+ var handlePointerDown = function (event) {
8666
+ var _a;
8667
+ if (!((_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
8668
+ setOpen(false);
8669
+ }
8670
+ };
8671
+ var handleScroll = function () { return setOpen(false); };
8672
+ document.addEventListener("pointerdown", handlePointerDown, true);
8673
+ window.addEventListener("scroll", handleScroll, true);
8674
+ return function () {
8675
+ document.removeEventListener("pointerdown", handlePointerDown, true);
8676
+ window.removeEventListener("scroll", handleScroll, true);
8677
+ };
8678
+ }, [tapMode, open, setOpen]);
8679
+ // Desktop (o tap deshabilitado) → comportamiento nativo de HeroUI.
8680
+ if (!tapMode) {
8681
+ return (jsxRuntime.jsx(react.Tooltip, __assign({}, props, { placement: placement, isOpen: isOpen, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: children })));
8682
+ }
8683
+ // Táctil → controlado, el tap sobre el trigger alterna la visibilidad.
8684
+ // El placement cambia a `touchPlacement` (arriba por defecto) para que no
8685
+ // se corte en pantallas estrechas.
8686
+ //
8687
+ // El toggle va en `onPointerUp` (no `onClick`): los eventos de puntero se
8688
+ // disparan de forma fiable en táctil, mientras que el `click` sintético
8689
+ // puede suprimirse por el manejo de gestos del trigger.
8690
+ return (jsxRuntime.jsx(react.Tooltip, __assign({}, props, { placement: touchPlacement, isOpen: open, onOpenChange: setOpen, children: jsxRuntime.jsx("span", { ref: triggerRef, className: "inline-flex", onPointerUp: function (event) {
8691
+ event.stopPropagation();
8692
+ setOpen(!open);
8693
+ }, children: children }) })));
8694
+ };
8695
+
8609
8696
  /**
8610
8697
  * Registro público de temas Aurora para consumidores (@beweco/aurora-ui).
8611
8698
  * Derivado de {@link themeColors}: al añadir un par `*-light` / `*-dark` en
@@ -9167,6 +9254,7 @@ exports.ThemePicker = ThemePicker;
9167
9254
  exports.ThemeProvider = ThemeProvider;
9168
9255
  exports.TimeInputComponent = TimeInput;
9169
9256
  exports.ToastContext = ToastContext;
9257
+ exports.Tooltip = Tooltip;
9170
9258
  exports.TwoColumnLayoutAgent = TwoColumnLayoutAgent;
9171
9259
  exports.UploadFile = UploadFile;
9172
9260
  exports.VerticalSteps = VerticalSteps;
@@ -9175,6 +9263,7 @@ exports.Wizard = Wizard;
9175
9263
  exports.WizardNavigation = WizardNavigation;
9176
9264
  exports.WizardSidebar = WizardSidebar;
9177
9265
  exports.applyCustomPrimaryColor = applyCustomPrimaryColor;
9266
+ exports.createCurrencyFormatter = createCurrencyFormatter;
9178
9267
  exports.defaultCountries = uniqueCountries;
9179
9268
  exports.defaultCurrencyOptions = defaultCurrencyOptions;
9180
9269
  exports.defaultTranslations = defaultTranslations$4;
package/dist/index.esm.js CHANGED
@@ -1,11 +1,11 @@
1
- import { Skeleton, Button as Button$1, Chip as Chip$1, Accordion, AccordionItem, Pagination as Pagination$1, DatePicker as DatePicker$1, DateRangePicker as DateRangePicker$1, Input as Input$1, RadioGroup, Radio, cn, Card as Card$1, Spacer, Tabs, Tab, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, Autocomplete, Tooltip as Tooltip$1, Breadcrumbs, BreadcrumbItem, DropdownSection, Badge, Spinner, ListboxItem, Popover, PopoverTrigger, PopoverContent, Listbox, ListboxSection, Avatar, Link, Switch as Switch$1, TimeInput as TimeInput$1, Select as Select$1, Image as Image$1, Table, TableHeader, TableColumn, TableBody, TableRow, TableCell, Textarea as Textarea$1, Alert, Modal as Modal$1, ModalContent as ModalContent$1, ModalHeader as ModalHeader$1, ModalBody as ModalBody$1, Slider, ModalFooter as ModalFooter$1, CardBody, SelectItem, Drawer, DrawerContent, DrawerBody, SelectSection, Checkbox, AutocompleteItem, Divider } from '@heroui/react';
1
+ import { Skeleton, Button as Button$1, Chip as Chip$1, Accordion, AccordionItem, Pagination as Pagination$1, DatePicker as DatePicker$1, DateRangePicker as DateRangePicker$1, Input as Input$1, RadioGroup, Radio, cn, Card as Card$1, Spacer, Tabs, Tab, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, Autocomplete, Tooltip as Tooltip$2, Breadcrumbs, BreadcrumbItem, DropdownSection, Badge, Spinner, ListboxItem, Popover, PopoverTrigger, PopoverContent, Listbox, ListboxSection, Avatar, Link, Switch as Switch$1, TimeInput as TimeInput$1, Select as Select$1, Image as Image$1, Table, TableHeader, TableColumn, TableBody, TableRow, TableCell, Textarea as Textarea$1, Alert, Modal as Modal$1, ModalContent as ModalContent$1, ModalHeader as ModalHeader$1, ModalBody as ModalBody$1, Slider, ModalFooter as ModalFooter$1, CardBody, SelectItem, Drawer, DrawerContent, DrawerBody, SelectSection, Checkbox, AutocompleteItem, Divider } from '@heroui/react';
2
2
  export * from '@heroui/react';
3
3
  export { Slider } from '@heroui/react';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import { Icon } from '@iconify/react';
6
6
  export { loadIcons } from '@iconify/react';
7
7
  import React, { useId, useState, useCallback, useMemo, forwardRef, useEffect, useImperativeHandle, createContext, useContext, useRef, useLayoutEffect, memo, createElement, Fragment as Fragment$1 } from 'react';
8
- import { ResponsiveContainer, AreaChart, CartesianGrid, XAxis, Tooltip, Area, LineChart, YAxis, Line } from 'recharts';
8
+ import { ResponsiveContainer, AreaChart, CartesianGrid, XAxis, Tooltip as Tooltip$1, Area, LineChart, YAxis, Line } from 'recharts';
9
9
  import { createPortal } from 'react-dom';
10
10
  import { motion, AnimatePresence } from 'framer-motion';
11
11
  import { useTheme } from '@heroui/use-theme';
@@ -536,7 +536,7 @@ var AnalyticsCard = function (_a) {
536
536
  }, width: 500, children: [jsx("defs", { children: jsxs("linearGradient", { id: "colorGradient", x1: "0", x2: "0", y1: "0", y2: "1", children: [jsx("stop", { offset: "10%", stopColor: "hsl(var(--heroui-".concat(color, "-500))"), stopOpacity: 0.3 }), jsx("stop", { offset: "100%", stopColor: "hsl(var(--heroui-".concat(color, "-100))"), stopOpacity: 0.1 })] }) }), jsx(CartesianGrid, { horizontalCoordinatesGenerator: function () { return [200, 150, 100, 50]; }, stroke: "hsl(var(--heroui-default-200))", strokeDasharray: "3 3", vertical: false }), jsx(XAxis, { axisLine: false, dataKey: "month", style: {
537
537
  fontSize: "var(--heroui-font-size-tiny)",
538
538
  transform: "translateX(-40px)",
539
- }, tickLine: false }), jsx(Tooltip, { content: function (_a) {
539
+ }, tickLine: false }), jsx(Tooltip$1, { content: function (_a) {
540
540
  var label = _a.label, payload = _a.payload;
541
541
  return (jsx("div", { className: "rounded-medium bg-foreground text-tiny shadow-small flex h-auto min-w-[120px] items-center gap-x-2 p-2", children: jsxs("div", { className: "flex w-full flex-col gap-y-0", children: [payload === null || payload === void 0 ? void 0 : payload.map(function (p, index) {
542
542
  var name = p.name;
@@ -584,7 +584,7 @@ function ChartTooltip(_a) {
584
584
  function AreaLineChart(_a) {
585
585
  var data = _a.data, xAxisKey = _a.xAxisKey, series = _a.series, title = _a.title, value = _a.value, trend = _a.trend, _b = _a.height, height = _b === void 0 ? 200 : _b, _c = _a.className, className = _c === void 0 ? "" : _c, _d = _a.wrappedInCard, wrappedInCard = _d === void 0 ? false : _d, formatTooltipValue = _a.formatTooltipValue;
586
586
  var hasHeader = title != null || value != null || trend != null || series.length > 0;
587
- var content = (jsxs(Fragment, { children: [hasHeader && (jsxs("div", { className: "flex items-start justify-between mb-6", children: [jsxs("div", { children: [title != null && (jsx(H3, { className: "text-xs font-semibold text-gray-500 uppercase tracking-wide mb-1", children: title })), value != null && (jsxs("div", { className: "flex items-baseline gap-2", children: [jsx("span", { className: "text-2xl font-bold text-gray-900", children: value }), trend != null && (jsx("span", { className: "text-xs font-medium text-yellow-600 bg-yellow-50 px-2 py-1 rounded", children: trend }))] }))] }), series.length > 0 && (jsx("div", { className: "flex items-center gap-4", children: series.map(function (s) { return (jsxs("div", { className: "flex items-center gap-2", children: [jsx("svg", { width: "16", height: "2", viewBox: "0 0 16 2", fill: "none", children: jsx("line", { x1: "0", y1: "1", x2: "16", y2: "1", stroke: s.color, strokeWidth: "2" }) }), jsx("span", { className: "text-xs text-gray-600 font-medium", children: s.label })] }, s.dataKey)); }) }))] })), jsx("div", { className: "w-full", style: { height: "".concat(height, "px") }, children: jsx(ResponsiveContainer, { width: "100%", height: "100%", children: jsxs(LineChart, { data: data, margin: { top: 5, right: 5, left: 5, bottom: 5 }, children: [jsx("defs", { children: series.map(function (s) { return (jsxs("linearGradient", { id: "area-line-chart-".concat(s.dataKey), x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: s.color, stopOpacity: 0.3 }), jsx("stop", { offset: "50%", stopColor: s.color, stopOpacity: 0.15 }), jsx("stop", { offset: "100%", stopColor: s.color, stopOpacity: 0 })] }, s.dataKey)); }) }), jsx(XAxis, { dataKey: xAxisKey, axisLine: false, tickLine: false, tick: { fill: "#9ca3af", fontSize: 12 }, dy: 10 }), jsx(YAxis, { axisLine: false, tickLine: false, tick: { fill: "transparent", fontSize: 0 }, width: 0, tickCount: 6, domain: [0, "dataMax + 100"], allowDecimals: false }), jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "#d1d5db", strokeOpacity: 0.5, vertical: false, horizontal: true }), jsx(Tooltip, { content: jsx(ChartTooltip, { series: series, formatValue: formatTooltipValue }) }), series.map(function (s) { return (jsx(Area, { type: "natural", dataKey: s.dataKey, stroke: "none", fill: "url(#area-line-chart-".concat(s.dataKey, ")"), animationDuration: 1500, animationEasing: "ease-in-out" }, "area-".concat(s.dataKey))); }), series.map(function (s) { return (jsx(Line, { type: "natural", dataKey: s.dataKey, name: s.dataKey, stroke: s.color, strokeWidth: 3, dot: false, activeDot: {
587
+ var content = (jsxs(Fragment, { children: [hasHeader && (jsxs("div", { className: "flex items-start justify-between mb-6", children: [jsxs("div", { children: [title != null && (jsx(H3, { className: "text-xs font-semibold text-gray-500 uppercase tracking-wide mb-1", children: title })), value != null && (jsxs("div", { className: "flex items-baseline gap-2", children: [jsx("span", { className: "text-2xl font-bold text-gray-900", children: value }), trend != null && (jsx("span", { className: "text-xs font-medium text-yellow-600 bg-yellow-50 px-2 py-1 rounded", children: trend }))] }))] }), series.length > 0 && (jsx("div", { className: "flex items-center gap-4", children: series.map(function (s) { return (jsxs("div", { className: "flex items-center gap-2", children: [jsx("svg", { width: "16", height: "2", viewBox: "0 0 16 2", fill: "none", children: jsx("line", { x1: "0", y1: "1", x2: "16", y2: "1", stroke: s.color, strokeWidth: "2" }) }), jsx("span", { className: "text-xs text-gray-600 font-medium", children: s.label })] }, s.dataKey)); }) }))] })), jsx("div", { className: "w-full", style: { height: "".concat(height, "px") }, children: jsx(ResponsiveContainer, { width: "100%", height: "100%", children: jsxs(LineChart, { data: data, margin: { top: 5, right: 5, left: 5, bottom: 5 }, children: [jsx("defs", { children: series.map(function (s) { return (jsxs("linearGradient", { id: "area-line-chart-".concat(s.dataKey), x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "0%", stopColor: s.color, stopOpacity: 0.3 }), jsx("stop", { offset: "50%", stopColor: s.color, stopOpacity: 0.15 }), jsx("stop", { offset: "100%", stopColor: s.color, stopOpacity: 0 })] }, s.dataKey)); }) }), jsx(XAxis, { dataKey: xAxisKey, axisLine: false, tickLine: false, tick: { fill: "#9ca3af", fontSize: 12 }, dy: 10 }), jsx(YAxis, { axisLine: false, tickLine: false, tick: { fill: "transparent", fontSize: 0 }, width: 0, tickCount: 6, domain: [0, "dataMax + 100"], allowDecimals: false }), jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "#d1d5db", strokeOpacity: 0.5, vertical: false, horizontal: true }), jsx(Tooltip$1, { content: jsx(ChartTooltip, { series: series, formatValue: formatTooltipValue }) }), series.map(function (s) { return (jsx(Area, { type: "natural", dataKey: s.dataKey, stroke: "none", fill: "url(#area-line-chart-".concat(s.dataKey, ")"), animationDuration: 1500, animationEasing: "ease-in-out" }, "area-".concat(s.dataKey))); }), series.map(function (s) { return (jsx(Line, { type: "natural", dataKey: s.dataKey, name: s.dataKey, stroke: s.color, strokeWidth: 3, dot: false, activeDot: {
588
588
  r: 6,
589
589
  fill: s.color,
590
590
  stroke: "#fff",
@@ -1731,7 +1731,7 @@ var ColorSelector = function (_a) {
1731
1731
  return null;
1732
1732
  }
1733
1733
  var isSelected = selectedColor === baseId;
1734
- return (jsx(Radio, { value: baseId, "aria-label": formatThemeDisplayName(themeName), classNames: radioClassNames, children: jsx(Tooltip$1, { content: formatThemeDisplayName(themeName), delay: 0, closeDelay: 120, placement: "top", children: jsx("span", { className: [
1734
+ return (jsx(Radio, { value: baseId, "aria-label": formatThemeDisplayName(themeName), classNames: radioClassNames, children: jsx(Tooltip$2, { content: formatThemeDisplayName(themeName), delay: 0, closeDelay: 120, placement: "top", children: jsx("span", { className: [
1735
1735
  swatchClass,
1736
1736
  "inline-block size-8",
1737
1737
  isSelected
@@ -3409,7 +3409,7 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
3409
3409
  }, endContent: isCollapsed || isNestType || hideEndContent
3410
3410
  ? null
3411
3411
  : ((_e = item.endContent) !== null && _e !== void 0 ? _e : null), startContent: isCollapsed || isNestType ? null : item.icon ? (jsx(IconComponent, { className: cn("text-default-500 group-data-[selected=true]:text-foreground", iconClassName), icon: item.icon, size: "lg" })) : (((_f = item.startContent) !== null && _f !== void 0 ? _f : null)), title: isCollapsed || isNestType ? null : item.title }),
3412
- isCollapsed && isNestType ? (jsxs(Popover, { placement: "right", offset: 10, children: [jsx(PopoverTrigger, { children: jsxs("div", { className: "flex w-full items-center justify-center gap-1", children: [jsx(Tooltip$1, { content: item.title, placement: "right", classNames: {
3412
+ isCollapsed && isNestType ? (jsxs(Popover, { placement: "right", offset: 10, children: [jsx(PopoverTrigger, { children: jsxs("div", { className: "flex w-full items-center justify-center gap-1", children: [jsx(Tooltip$2, { content: item.title, placement: "right", classNames: {
3413
3413
  base: "text-default-500",
3414
3414
  }, children: jsx("div", { className: "flex items-center justify-center", children: item.icon ? (jsx(IconComponent, { className: cn("text-default-500 group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_g = item.startContent) !== null && _g !== void 0 ? _g : null)) }) }), jsx(IconComponent, { className: "text-default-400 shrink-0", icon: "solar:alt-arrow-right-outline", size: "sm", "aria-hidden": true })] }) }), jsx(PopoverContent, { className: "border border-default-200 bg-white p-0 shadow-md", children: jsxs("div", { className: "min-w-[200px] rounded-large p-2", children: [jsx("div", { className: "px-3 py-2 text-small font-semibold text-default-500", children: item.title }), jsx(Listbox, { className: "mt-0.5", classNames: {
3415
3415
  list: "border-l border-default-200 pl-4 ml-2 gap-0.5",
@@ -3435,7 +3435,7 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
3435
3435
  }
3436
3436
  var isItemSelected = selectedKey === item.key;
3437
3437
  item.href; var itemProps = __rest(item, ["href"]);
3438
- return (createElement(ListboxItem, __assign({}, itemProps, { key: item.key, endContent: isCollapsed || hideEndContent ? null : ((_b = item.endContent) !== null && _b !== void 0 ? _b : null), startContent: isCollapsed ? null : item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_c = item.startContent) !== null && _c !== void 0 ? _c : null)), textValue: item.title, title: isCollapsed ? null : item.title, onPress: function () { return handleItemPress(item); }, "aria-selected": isItemSelected, "aria-label": item.title || "Menu item ".concat(item.key) }), isCollapsed ? (jsx(Tooltip$1, { content: item.title, placement: "right", closeDelay: 200, shouldCloseOnBlur: false, classNames: {
3438
+ return (createElement(ListboxItem, __assign({}, itemProps, { key: item.key, endContent: isCollapsed || hideEndContent ? null : ((_b = item.endContent) !== null && _b !== void 0 ? _b : null), startContent: isCollapsed ? null : item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_c = item.startContent) !== null && _c !== void 0 ? _c : null)), textValue: item.title, title: isCollapsed ? null : item.title, onPress: function () { return handleItemPress(item); }, "aria-selected": isItemSelected, "aria-label": item.title || "Menu item ".concat(item.key) }), isCollapsed ? (jsx(Tooltip$2, { content: item.title, placement: "right", closeDelay: 200, shouldCloseOnBlur: false, classNames: {
3439
3439
  base: "text-default-500",
3440
3440
  }, children: jsx("div", { className: "flex w-full items-center justify-center", "aria-hidden": "true", children: item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_d = item.startContent) !== null && _d !== void 0 ? _d : null)) }) })) : null));
3441
3441
  },
@@ -7410,6 +7410,7 @@ var MultiSelectFilter = function (_a) {
7410
7410
  // RANGE FILTER
7411
7411
  // =========================================================================
7412
7412
  var RangeFilterComponent = function (_a) {
7413
+ var _b;
7413
7414
  var filter = _a.filter, value = _a.value, onChange = _a.onChange;
7414
7415
  var currentValue = value || { min: filter.data.min, max: filter.data.max };
7415
7416
  var rangeValue = [currentValue.min, currentValue.max];
@@ -7417,11 +7418,14 @@ var RangeFilterComponent = function (_a) {
7417
7418
  var min = newValue[0], max = newValue[1];
7418
7419
  onChange({ min: min, max: max });
7419
7420
  };
7421
+ var formatter = (_b = filter.data.formatValue) !== null && _b !== void 0 ? _b : (filter.data.unit
7422
+ ? function (val) { return "".concat(val, " ").concat(filter.data.unit); }
7423
+ : function (val) { return val.toString(); });
7420
7424
  // Generate data array for histogram (simple implementation)
7421
7425
  var data = Array.from({
7422
7426
  length: Math.ceil((filter.data.max - filter.data.min) / (filter.data.step || 1)) + 1,
7423
7427
  }, function (_, i) { return filter.data.min + i * (filter.data.step || 1); });
7424
- return (jsx(RangeFilter, { title: "Rango de ".concat(filter.title.toLowerCase()), minValue: filter.data.min, maxValue: filter.data.max, step: filter.data.step || 1, data: data, value: rangeValue, onChange: handleChange, className: "w-full", showHistogramCount: filter.data.showHistogramCount }));
7428
+ return (jsx(RangeFilter, { title: "Rango de ".concat(filter.title.toLowerCase()), minValue: filter.data.min, maxValue: filter.data.max, step: filter.data.step || 1, data: data, value: rangeValue, onChange: handleChange, formatValue: formatter, className: "w-full", showHistogramCount: filter.data.showHistogramCount }));
7425
7429
  };
7426
7430
  // =========================================================================
7427
7431
  // DATE FILTER
@@ -8423,6 +8427,26 @@ function TagsFilter(_a) {
8423
8427
  }
8424
8428
  TagsFilter.displayName = "TagsFilter";
8425
8429
 
8430
+ /**
8431
+ * Returns a formatValue function for use with RangeFilter/DrawerFilters range type.
8432
+ * Uses Intl.NumberFormat internally — the consumer decides locale, currency, and decimals.
8433
+ *
8434
+ * @example
8435
+ * // COP — no decimals
8436
+ * createCurrencyFormatter("es-CO", "COP")
8437
+ * // EUR — 2 decimals
8438
+ * createCurrencyFormatter("es-ES", "EUR", 2)
8439
+ */
8440
+ var createCurrencyFormatter = function (locale, currency, fractionDigits) {
8441
+ if (fractionDigits === void 0) { fractionDigits = 0; }
8442
+ var formatter = new Intl.NumberFormat(locale, {
8443
+ style: "currency",
8444
+ currency: currency,
8445
+ maximumFractionDigits: fractionDigits,
8446
+ });
8447
+ return function (val) { return formatter.format(val); };
8448
+ };
8449
+
8426
8450
  var Modal = function (props) {
8427
8451
  return (jsx(Modal$1, __assign({ shouldBlockScroll: true, radius: "lg", className: "py-9 px-6" }, props)));
8428
8452
  };
@@ -8607,6 +8631,69 @@ var Card = function (_a) {
8607
8631
  return (jsx(Card$1, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
8608
8632
  };
8609
8633
 
8634
+ /**
8635
+ * Tooltip - Componente BeweOS basado en HeroUI.
8636
+ *
8637
+ * Añade soporte de tap en dispositivos táctiles: el Tooltip de HeroUI solo
8638
+ * reacciona a hover/focus, lo que lo deja sin respuesta en móvil. Cuando se
8639
+ * detecta un dispositivo táctil, este wrapper lo controla por tap y lo cierra
8640
+ * al tocar fuera o al hacer scroll.
8641
+ */
8642
+ var Tooltip = function (_a) {
8643
+ var _b = _a.enableTapOnTouch, enableTapOnTouch = _b === void 0 ? true : _b, _c = _a.touchPlacement, touchPlacement = _c === void 0 ? "top" : _c, placement = _a.placement, isOpen = _a.isOpen, defaultOpen = _a.defaultOpen, onOpenChange = _a.onOpenChange, children = _a.children, props = __rest(_a, ["enableTapOnTouch", "touchPlacement", "placement", "isOpen", "defaultOpen", "onOpenChange", "children"]);
8644
+ // Detección táctil: NO basta con `(hover: none)`. Muchos móviles (p.ej.
8645
+ // Android) reportan `(hover: hover)` y `(hover: none)` da false, dejando el
8646
+ // tap sin activar. Se combina con `(pointer: coarse)` (coincide si cualquiera
8647
+ // es true): así un teléfono entra en modo tap aunque diga que tiene hover,
8648
+ // mientras que un desktop con ratón (coarse=false, hover=hover) no.
8649
+ var isTouch = useMediaQuery("(hover: none), (pointer: coarse)", false);
8650
+ var isControlled = isOpen !== undefined;
8651
+ var _d = useState(defaultOpen !== null && defaultOpen !== void 0 ? defaultOpen : false), internalOpen = _d[0], setInternalOpen = _d[1];
8652
+ var open = isControlled ? isOpen : internalOpen;
8653
+ var triggerRef = useRef(null);
8654
+ var setOpen = useCallback(function (next) {
8655
+ if (!isControlled) {
8656
+ setInternalOpen(next);
8657
+ }
8658
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(next);
8659
+ }, [isControlled, onOpenChange]);
8660
+ var tapMode = enableTapOnTouch && isTouch;
8661
+ // En modo tap, cerrar al tocar fuera del trigger o al hacer scroll.
8662
+ useEffect(function () {
8663
+ if (!(tapMode && open)) {
8664
+ return;
8665
+ }
8666
+ var handlePointerDown = function (event) {
8667
+ var _a;
8668
+ if (!((_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
8669
+ setOpen(false);
8670
+ }
8671
+ };
8672
+ var handleScroll = function () { return setOpen(false); };
8673
+ document.addEventListener("pointerdown", handlePointerDown, true);
8674
+ window.addEventListener("scroll", handleScroll, true);
8675
+ return function () {
8676
+ document.removeEventListener("pointerdown", handlePointerDown, true);
8677
+ window.removeEventListener("scroll", handleScroll, true);
8678
+ };
8679
+ }, [tapMode, open, setOpen]);
8680
+ // Desktop (o tap deshabilitado) → comportamiento nativo de HeroUI.
8681
+ if (!tapMode) {
8682
+ return (jsx(Tooltip$2, __assign({}, props, { placement: placement, isOpen: isOpen, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: children })));
8683
+ }
8684
+ // Táctil → controlado, el tap sobre el trigger alterna la visibilidad.
8685
+ // El placement cambia a `touchPlacement` (arriba por defecto) para que no
8686
+ // se corte en pantallas estrechas.
8687
+ //
8688
+ // El toggle va en `onPointerUp` (no `onClick`): los eventos de puntero se
8689
+ // disparan de forma fiable en táctil, mientras que el `click` sintético
8690
+ // puede suprimirse por el manejo de gestos del trigger.
8691
+ return (jsx(Tooltip$2, __assign({}, props, { placement: touchPlacement, isOpen: open, onOpenChange: setOpen, children: jsx("span", { ref: triggerRef, className: "inline-flex", onPointerUp: function (event) {
8692
+ event.stopPropagation();
8693
+ setOpen(!open);
8694
+ }, children: children }) })));
8695
+ };
8696
+
8610
8697
  /**
8611
8698
  * Registro público de temas Aurora para consumidores (@beweco/aurora-ui).
8612
8699
  * Derivado de {@link themeColors}: al añadir un par `*-light` / `*-dark` en
@@ -9086,4 +9173,4 @@ var NavigationLoadingProvider = function (_a) {
9086
9173
  return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
9087
9174
  };
9088
9175
 
9089
- 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_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, EmailPreview, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, InputPassword, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, REGISTERED_THEME_COLORS, RangeFilter, RowSteps, DEFAULT_TRANSLATIONS$1 as SEGMENTATION_DEFAULT_TRANSLATIONS, ScheduleRow, SearchInput, SegmentationBuilder, Select, SimpleLineChart, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, THEME_COLOR_HEX_MAP, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, TwoColumnLayoutAgent, UploadFile, VerticalSteps, WhatsAppPreview, Wizard, WizardNavigation, WizardSidebar, applyCustomPrimaryColor, uniqueCountries as defaultCountries, defaultCurrencyOptions, defaultTranslations$4 as defaultTranslations, forceLightOnlyThemeBeforeReact, formatAuroraThemeTooltip, generateThemeColorScale, getContrastForeground, getRegisteredThemeColorBases, getSelectedKeyFromPath, hexToThemeColor, hslToCssValue, isAuroraFullThemeId, isExactThemeColor, isGroupState, isHexColor, isSegmentationGroup, removeCustomPrimaryColor, sizeMap, themeColors, useAuraToast, useMediaQuery, useNavigationLoading, useThemeContext };
9176
+ 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_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, EmailPreview, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, InputPassword, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, REGISTERED_THEME_COLORS, RangeFilter, RowSteps, DEFAULT_TRANSLATIONS$1 as SEGMENTATION_DEFAULT_TRANSLATIONS, ScheduleRow, SearchInput, SegmentationBuilder, Select, SimpleLineChart, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, THEME_COLOR_HEX_MAP, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, Tooltip, TwoColumnLayoutAgent, UploadFile, VerticalSteps, WhatsAppPreview, Wizard, WizardNavigation, WizardSidebar, applyCustomPrimaryColor, createCurrencyFormatter, uniqueCountries as defaultCountries, defaultCurrencyOptions, defaultTranslations$4 as defaultTranslations, forceLightOnlyThemeBeforeReact, formatAuroraThemeTooltip, generateThemeColorScale, getContrastForeground, getRegisteredThemeColorBases, getSelectedKeyFromPath, hexToThemeColor, hslToCssValue, isAuroraFullThemeId, isExactThemeColor, isGroupState, isHexColor, isSegmentationGroup, removeCustomPrimaryColor, sizeMap, themeColors, useAuraToast, useMediaQuery, useNavigationLoading, useThemeContext };
@@ -40,6 +40,7 @@ export interface RangeFilterData extends BaseFilterData {
40
40
  max: number;
41
41
  step?: number;
42
42
  unit?: string;
43
+ formatValue?: (val: number) => string;
43
44
  /** When false, hides the product count in the histogram tooltip. Defaults to true. */
44
45
  showHistogramCount?: boolean;
45
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerFilters.types.d.ts","sourceRoot":"","sources":["../../../../src/components/drawer-filters/DrawerFilters.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DrawerFilters.types.d.ts","sourceRoot":"","sources":["../../../../src/components/drawer-filters/DrawerFilters.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type React from "react";
2
+ import type { TooltipProps } from "./Tooltip.types";
3
+ /**
4
+ * Tooltip - Componente BeweOS basado en HeroUI.
5
+ *
6
+ * Añade soporte de tap en dispositivos táctiles: el Tooltip de HeroUI solo
7
+ * reacciona a hover/focus, lo que lo deja sin respuesta en móvil. Cuando se
8
+ * detecta un dispositivo táctil, este wrapper lo controla por tap y lo cierra
9
+ * al tocar fuera o al hacer scroll.
10
+ */
11
+ export declare const Tooltip: React.FC<TooltipProps>;
12
+ //# sourceMappingURL=Tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAgG1C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { TooltipProps as HeroUITooltipProps } from "@heroui/react";
2
+ export type TooltipProps = HeroUITooltipProps & {
3
+ /**
4
+ * En dispositivos táctiles (sin capacidad de hover) permite abrir/cerrar
5
+ * el tooltip con un tap sobre el trigger. El Tooltip de HeroUI por defecto
6
+ * solo responde a hover/focus, por lo que queda inerte en móvil.
7
+ *
8
+ * Cuando es `true` (default) y se detecta un dispositivo táctil, el
9
+ * componente pasa a modo controlado: el tap alterna la visibilidad y un
10
+ * tap fuera (o scroll) lo cierra. En desktop mantiene el comportamiento
11
+ * nativo de HeroUI.
12
+ * @default true
13
+ */
14
+ enableTapOnTouch?: boolean;
15
+ /**
16
+ * Posición del tooltip en dispositivos táctiles (cuando `enableTapOnTouch`
17
+ * está activo). Por defecto `"top"`, ya que en pantallas estrechas los
18
+ * placements laterales (`left`/`right`) suelen cortarse. En desktop se
19
+ * respeta el `placement` normal.
20
+ * @default "top"
21
+ */
22
+ touchPlacement?: HeroUITooltipProps["placement"];
23
+ };
24
+ //# sourceMappingURL=Tooltip.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.types.d.ts","sourceRoot":"","sources":["../../../../src/components/tooltip/Tooltip.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC/C;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;CACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Tooltip } from "./Tooltip";
2
+ export type { TooltipProps } from "./Tooltip.types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -55,6 +55,7 @@ export * from "./components/range-filter";
55
55
  export * from "./components/simple-line-chart";
56
56
  export * from "./components/segmentation-builder";
57
57
  export * from "./components/tags-filter";
58
+ export * from "./utils/formatters";
58
59
  export { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, type ModalProps, } from "./components/modal";
59
60
  export { AuraAutocomplete, type AuraAutocompleteProps, } from "./components/autocomplete";
60
61
  export { Button, type ButtonProps } from "./components/button";
@@ -69,6 +70,7 @@ export { Pagination, type PaginationProps } from "./components/pagination";
69
70
  export { Chip, type ChipProps } from "./components/chip";
70
71
  export { RangeFilter, type RangeFilterProps, type RangeFilterTranslations, } from "./components/range-filter";
71
72
  export { TagsFilter, type TagsFilterProps, type TagsFilterTranslations, type TagItem, } from "./components/tags-filter";
73
+ export { Tooltip, type TooltipProps } from "./components/tooltip";
72
74
  export { InputPassword, type InputPasswordProps, type PasswordCriterionItem, type InputPasswordTranslations, } from "./components/input-password";
73
75
  export { SegmentationBuilder, type SegmentationBuilderProps, type SegmentationBuilderRef, type SegmentationBuilderTranslations, type SegmentationField, type SegmentationGroup, type SegmentationRule, type SegmentationFilter, type SegmentationTag, type SegmentationOperator, } from "./components/segmentation-builder";
74
76
  export * from "./types/calendar.types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns a formatValue function for use with RangeFilter/DrawerFilters range type.
3
+ * Uses Intl.NumberFormat internally — the consumer decides locale, currency, and decimals.
4
+ *
5
+ * @example
6
+ * // COP — no decimals
7
+ * createCurrencyFormatter("es-CO", "COP")
8
+ * // EUR — 2 decimals
9
+ * createCurrencyFormatter("es-ES", "EUR", 2)
10
+ */
11
+ export declare const createCurrencyFormatter: (locale: string, currency: string, fractionDigits?: number) => ((val: number) => string);
12
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GACnC,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,uBAAkB,KAChB,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAO1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "0.6.52",
3
+ "version": "0.6.54",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",