@beweco/aurora-ui 0.6.53 → 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 +64 -0
- package/dist/index.esm.js +71 -8
- package/dist/types/components/tooltip/Tooltip.d.ts +12 -0
- package/dist/types/components/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/types/components/tooltip/Tooltip.types.d.ts +24 -0
- package/dist/types/components/tooltip/Tooltip.types.d.ts.map +1 -0
- package/dist/types/components/tooltip/index.d.ts +3 -0
- package/dist/types/components/tooltip/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -8630,6 +8630,69 @@ var Card = function (_a) {
|
|
|
8630
8630
|
return (jsxRuntime.jsx(react.Card, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
|
|
8631
8631
|
};
|
|
8632
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
|
+
|
|
8633
8696
|
/**
|
|
8634
8697
|
* Registro público de temas Aurora para consumidores (@beweco/aurora-ui).
|
|
8635
8698
|
* Derivado de {@link themeColors}: al añadir un par `*-light` / `*-dark` en
|
|
@@ -9191,6 +9254,7 @@ exports.ThemePicker = ThemePicker;
|
|
|
9191
9254
|
exports.ThemeProvider = ThemeProvider;
|
|
9192
9255
|
exports.TimeInputComponent = TimeInput;
|
|
9193
9256
|
exports.ToastContext = ToastContext;
|
|
9257
|
+
exports.Tooltip = Tooltip;
|
|
9194
9258
|
exports.TwoColumnLayoutAgent = TwoColumnLayoutAgent;
|
|
9195
9259
|
exports.UploadFile = UploadFile;
|
|
9196
9260
|
exports.VerticalSteps = VerticalSteps;
|
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
|
+
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$
|
|
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$
|
|
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$
|
|
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
|
},
|
|
@@ -8631,6 +8631,69 @@ var Card = function (_a) {
|
|
|
8631
8631
|
return (jsx(Card$1, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
|
|
8632
8632
|
};
|
|
8633
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
|
+
|
|
8634
8697
|
/**
|
|
8635
8698
|
* Registro público de temas Aurora para consumidores (@beweco/aurora-ui).
|
|
8636
8699
|
* Derivado de {@link themeColors}: al añadir un par `*-light` / `*-dark` en
|
|
@@ -9110,4 +9173,4 @@ var NavigationLoadingProvider = function (_a) {
|
|
|
9110
9173
|
return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
|
|
9111
9174
|
};
|
|
9112
9175
|
|
|
9113
|
-
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, 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 };
|
|
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 };
|
|
@@ -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 @@
|
|
|
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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export { Pagination, type PaginationProps } from "./components/pagination";
|
|
|
70
70
|
export { Chip, type ChipProps } from "./components/chip";
|
|
71
71
|
export { RangeFilter, type RangeFilterProps, type RangeFilterTranslations, } from "./components/range-filter";
|
|
72
72
|
export { TagsFilter, type TagsFilterProps, type TagsFilterTranslations, type TagItem, } from "./components/tags-filter";
|
|
73
|
+
export { Tooltip, type TooltipProps } from "./components/tooltip";
|
|
73
74
|
export { InputPassword, type InputPasswordProps, type PasswordCriterionItem, type InputPasswordTranslations, } from "./components/input-password";
|
|
74
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";
|
|
75
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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"}
|