@beweco/aurora-ui 0.6.70 → 0.6.72-qa.94
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/assets/css/styles.css +1 -1
- package/dist/index.cjs.js +229 -49
- package/dist/index.esm.js +220 -51
- package/dist/types/components/area-line-chart/AreaLineChart.d.ts +1 -1
- package/dist/types/components/area-line-chart/AreaLineChart.d.ts.map +1 -1
- package/dist/types/components/area-line-chart/AreaLineChart.types.d.ts +8 -0
- package/dist/types/components/area-line-chart/AreaLineChart.types.d.ts.map +1 -1
- package/dist/types/components/donut-chart/DonutChart.d.ts +9 -0
- package/dist/types/components/donut-chart/DonutChart.d.ts.map +1 -0
- package/dist/types/components/donut-chart/DonutChart.types.d.ts +51 -0
- package/dist/types/components/donut-chart/DonutChart.types.d.ts.map +1 -0
- package/dist/types/components/donut-chart/donut-chart.utils.d.ts +15 -0
- package/dist/types/components/donut-chart/donut-chart.utils.d.ts.map +1 -0
- package/dist/types/components/donut-chart/index.d.ts +4 -0
- package/dist/types/components/donut-chart/index.d.ts.map +1 -0
- package/dist/types/components/drawer-filters/DrawerFilters.types.d.ts +13 -0
- package/dist/types/components/drawer-filters/DrawerFilters.types.d.ts.map +1 -1
- package/dist/types/components/drawer-filters/_internal/FilterSection.d.ts.map +1 -1
- package/dist/types/components/phone/Phone.d.ts.map +1 -1
- package/dist/types/components/ranked-bar-list/RankedBarList.d.ts +10 -0
- package/dist/types/components/ranked-bar-list/RankedBarList.d.ts.map +1 -0
- package/dist/types/components/ranked-bar-list/RankedBarList.types.d.ts +41 -0
- package/dist/types/components/ranked-bar-list/RankedBarList.types.d.ts.map +1 -0
- package/dist/types/components/ranked-bar-list/index.d.ts +4 -0
- package/dist/types/components/ranked-bar-list/index.d.ts.map +1 -0
- package/dist/types/components/ranked-bar-list/ranked-bar-list.utils.d.ts +16 -0
- package/dist/types/components/ranked-bar-list/ranked-bar-list.utils.d.ts.map +1 -0
- package/dist/types/components/schedule-row/schedule-row.d.ts.map +1 -1
- package/dist/types/components/stat-tile/StatTile.d.ts +10 -0
- package/dist/types/components/stat-tile/StatTile.d.ts.map +1 -0
- package/dist/types/components/stat-tile/StatTile.types.d.ts +40 -0
- package/dist/types/components/stat-tile/StatTile.types.d.ts.map +1 -0
- package/dist/types/components/stat-tile/index.d.ts +3 -0
- package/dist/types/components/stat-tile/index.d.ts.map +1 -0
- package/dist/types/components/tags-filter/TagsFilter.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -581,9 +581,9 @@ function ChartTooltip(_a) {
|
|
|
581
581
|
})] }));
|
|
582
582
|
}
|
|
583
583
|
function AreaLineChart(_a) {
|
|
584
|
-
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;
|
|
584
|
+
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, _e = _a.yAxisDomain, yAxisDomain = _e === void 0 ? [0, "dataMax + 100"] : _e;
|
|
585
585
|
var hasHeader = title != null || value != null || trend != null || series.length > 0;
|
|
586
|
-
var content = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [hasHeader && (jsxRuntime.jsxs("div", { className: "flex items-start justify-between mb-6", children: [jsxRuntime.jsxs("div", { children: [title != null && (jsxRuntime.jsx(H3, { className: "text-xs font-semibold text-gray-500 uppercase tracking-wide mb-1", children: title })), value != null && (jsxRuntime.jsxs("div", { className: "flex items-baseline gap-2", children: [jsxRuntime.jsx("span", { className: "text-2xl font-bold text-gray-900", children: value }), trend != null && (jsxRuntime.jsx("span", { className: "text-xs font-medium text-yellow-600 bg-yellow-50 px-2 py-1 rounded", children: trend }))] }))] }), series.length > 0 && (jsxRuntime.jsx("div", { className: "flex items-center gap-4", children: series.map(function (s) { return (jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("svg", { width: "16", height: "2", viewBox: "0 0 16 2", fill: "none", children: jsxRuntime.jsx("line", { x1: "0", y1: "1", x2: "16", y2: "1", stroke: s.color, strokeWidth: "2" }) }), jsxRuntime.jsx("span", { className: "text-xs text-gray-600 font-medium", children: s.label })] }, s.dataKey)); }) }))] })), jsxRuntime.jsx("div", { className: "w-full", style: { height: "".concat(height, "px") }, children: jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: jsxRuntime.jsxs(recharts.LineChart, { data: data, margin: { top: 5, right: 5, left: 5, bottom: 5 }, children: [jsxRuntime.jsx("defs", { children: series.map(function (s) { return (jsxRuntime.jsxs("linearGradient", { id: "area-line-chart-".concat(s.dataKey), x1: "0", y1: "0", x2: "0", y2: "1", children: [jsxRuntime.jsx("stop", { offset: "0%", stopColor: s.color, stopOpacity: 0.3 }), jsxRuntime.jsx("stop", { offset: "50%", stopColor: s.color, stopOpacity: 0.15 }), jsxRuntime.jsx("stop", { offset: "100%", stopColor: s.color, stopOpacity: 0 })] }, s.dataKey)); }) }), jsxRuntime.jsx(recharts.XAxis, { dataKey: xAxisKey, axisLine: false, tickLine: false, tick: { fill: "#9ca3af", fontSize: 12 }, dy: 10 }), jsxRuntime.jsx(recharts.YAxis, { axisLine: false, tickLine: false, tick: { fill: "transparent", fontSize: 0 }, width: 0, tickCount: 6, domain:
|
|
586
|
+
var content = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [hasHeader && (jsxRuntime.jsxs("div", { className: "flex items-start justify-between mb-6", children: [jsxRuntime.jsxs("div", { children: [title != null && (jsxRuntime.jsx(H3, { className: "text-xs font-semibold text-gray-500 uppercase tracking-wide mb-1", children: title })), value != null && (jsxRuntime.jsxs("div", { className: "flex items-baseline gap-2", children: [jsxRuntime.jsx("span", { className: "text-2xl font-bold text-gray-900", children: value }), trend != null && (jsxRuntime.jsx("span", { className: "text-xs font-medium text-yellow-600 bg-yellow-50 px-2 py-1 rounded", children: trend }))] }))] }), series.length > 0 && (jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-4", children: series.map(function (s) { return (jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntime.jsx("svg", { width: "16", height: "2", viewBox: "0 0 16 2", fill: "none", children: jsxRuntime.jsx("line", { x1: "0", y1: "1", x2: "16", y2: "1", stroke: s.color, strokeWidth: "2" }) }), jsxRuntime.jsx("span", { className: "text-xs text-gray-600 font-medium", children: s.label })] }, s.dataKey)); }) }))] })), jsxRuntime.jsx("div", { className: "w-full", style: { height: "".concat(height, "px") }, children: jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: jsxRuntime.jsxs(recharts.LineChart, { data: data, margin: { top: 5, right: 5, left: 5, bottom: 5 }, children: [jsxRuntime.jsx("defs", { children: series.map(function (s) { return (jsxRuntime.jsxs("linearGradient", { id: "area-line-chart-".concat(s.dataKey), x1: "0", y1: "0", x2: "0", y2: "1", children: [jsxRuntime.jsx("stop", { offset: "0%", stopColor: s.color, stopOpacity: 0.3 }), jsxRuntime.jsx("stop", { offset: "50%", stopColor: s.color, stopOpacity: 0.15 }), jsxRuntime.jsx("stop", { offset: "100%", stopColor: s.color, stopOpacity: 0 })] }, s.dataKey)); }) }), jsxRuntime.jsx(recharts.XAxis, { dataKey: xAxisKey, axisLine: false, tickLine: false, tick: { fill: "#9ca3af", fontSize: 12 }, dy: 10 }), jsxRuntime.jsx(recharts.YAxis, { axisLine: false, tickLine: false, tick: { fill: "transparent", fontSize: 0 }, width: 0, tickCount: 6, domain: yAxisDomain, allowDecimals: false }), jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "#d1d5db", strokeOpacity: 0.5, vertical: false, horizontal: true }), jsxRuntime.jsx(recharts.Tooltip, { content: jsxRuntime.jsx(ChartTooltip, { series: series, formatValue: formatTooltipValue }) }), series.map(function (s) { return (jsxRuntime.jsx(recharts.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 (jsxRuntime.jsx(recharts.Line, { type: "natural", dataKey: s.dataKey, name: s.dataKey, stroke: s.color, strokeWidth: 3, dot: false, activeDot: {
|
|
587
587
|
r: 6,
|
|
588
588
|
fill: s.color,
|
|
589
589
|
stroke: "#fff",
|
|
@@ -2946,6 +2946,65 @@ var DateSelector = function (_a) {
|
|
|
2946
2946
|
return (jsxRuntime.jsxs("div", { className: "w-full flex flex-wrap xs:gap-5 justify-between items-center ".concat(className), children: [jsxRuntime.jsxs(react.RadioGroup, __assign({ color: "primary", orientation: "horizontal", size: "sm", value: type, onValueChange: handleTypeChange }, radioGroupProps, { children: [jsxRuntime.jsx(react.Radio, __assign({ value: exports.HolidayType.SingleDay }, radioItemProps, { children: t.dayOption })), jsxRuntime.jsx(react.Radio, __assign({ value: exports.HolidayType.DateRange }, radioItemProps, { children: t.dateRangeOption }))] })), type === exports.HolidayType.DateRange ? (jsxRuntime.jsx(react.DateRangePicker, __assign({ className: "xs:w-full md:flex-1 md:max-w-xs", value: dateRange || null, onChange: handleDateRangeChange, "aria-label": t.selectDateRangeAriaLabel, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }) }, dateRangePickerProps))) : (jsxRuntime.jsx(react.DatePicker, __assign({ className: "xs:w-full md:flex-1 md:max-w-40", value: date || null, onChange: handleDateChange, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }), "aria-label": t.selectDateAriaLabel }, datePickerProps)))] }));
|
|
2947
2947
|
};
|
|
2948
2948
|
|
|
2949
|
+
/** Paleta categórica por defecto: primary/secondary/success/warning/danger de BeweOS. */
|
|
2950
|
+
var DEFAULT_DONUT_COLORS = [
|
|
2951
|
+
"#006fee",
|
|
2952
|
+
"#7828c8",
|
|
2953
|
+
"#17c964",
|
|
2954
|
+
"#f5a524",
|
|
2955
|
+
"#f31260",
|
|
2956
|
+
];
|
|
2957
|
+
function safeValue$1(value) {
|
|
2958
|
+
return Number.isFinite(value) && value > 0 ? value : 0;
|
|
2959
|
+
}
|
|
2960
|
+
function computeTotal(data) {
|
|
2961
|
+
return data.reduce(function (sum, d) { return sum + safeValue$1(d.value); }, 0);
|
|
2962
|
+
}
|
|
2963
|
+
/**
|
|
2964
|
+
* `true` cuando no hay datos o todos los valores son 0 — mismo criterio que el
|
|
2965
|
+
* `NotData` legacy de Guru.js: un donut sin nada que repartir no aporta información.
|
|
2966
|
+
*/
|
|
2967
|
+
function isDonutEmpty(data) {
|
|
2968
|
+
return data.length === 0 || computeTotal(data) === 0;
|
|
2969
|
+
}
|
|
2970
|
+
/**
|
|
2971
|
+
* Resuelve las proporciones y el color final de cada categoría.
|
|
2972
|
+
* El color propio de cada dato tiene prioridad; si falta, se cicla `palette` por índice.
|
|
2973
|
+
*/
|
|
2974
|
+
function computeSlices(data, palette) {
|
|
2975
|
+
if (palette === void 0) { palette = DEFAULT_DONUT_COLORS; }
|
|
2976
|
+
var total = computeTotal(data);
|
|
2977
|
+
return data.map(function (datum, index) {
|
|
2978
|
+
var _a;
|
|
2979
|
+
var value = safeValue$1(datum.value);
|
|
2980
|
+
return __assign(__assign({}, datum), { value: value, color: (_a = datum.color) !== null && _a !== void 0 ? _a : palette[index % palette.length], percent: total > 0 ? value / total : 0 });
|
|
2981
|
+
});
|
|
2982
|
+
}
|
|
2983
|
+
|
|
2984
|
+
var DEFAULT_TRANSLATIONS$b = {
|
|
2985
|
+
emptyState: "Sin datos para mostrar",
|
|
2986
|
+
totalLabel: "Total",
|
|
2987
|
+
};
|
|
2988
|
+
/**
|
|
2989
|
+
* DonutChart - Gráfico circular (pie o donut, según `innerRadiusRatio`) con
|
|
2990
|
+
* leyenda y total central propios, renderizados fuera del árbol de Recharts
|
|
2991
|
+
* para que sean estables independientemente del tamaño medido del contenedor.
|
|
2992
|
+
*/
|
|
2993
|
+
var DonutChart = function (_a) {
|
|
2994
|
+
var data = _a.data, _b = _a.height, height = _b === void 0 ? 220 : _b, _c = _a.innerRadiusRatio, innerRadiusRatio = _c === void 0 ? 0.65 : _c, _d = _a.showLegend, showLegend = _d === void 0 ? true : _d, _e = _a.showTotal, showTotal = _e === void 0 ? true : _e, colors = _a.colors, formatValue = _a.formatValue, _f = _a.translations, translations = _f === void 0 ? {} : _f, className = _a.className;
|
|
2995
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$b), translations);
|
|
2996
|
+
if (isDonutEmpty(data)) {
|
|
2997
|
+
return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx(P, { children: t.emptyState }) }));
|
|
2998
|
+
}
|
|
2999
|
+
var slices = computeSlices(data, colors);
|
|
3000
|
+
var total = slices.reduce(function (sum, s) { return sum + s.value; }, 0);
|
|
3001
|
+
var format = function (value) {
|
|
3002
|
+
return formatValue ? formatValue(value) : String(value);
|
|
3003
|
+
};
|
|
3004
|
+
var isDonut = innerRadiusRatio > 0;
|
|
3005
|
+
return (jsxRuntime.jsxs("div", { className: className, children: [jsxRuntime.jsxs("div", { className: "relative w-full", style: { height: height }, children: [jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: jsxRuntime.jsxs(recharts.PieChart, { children: [jsxRuntime.jsx(recharts.Pie, { data: slices, dataKey: "value", nameKey: "name", innerRadius: isDonut ? "".concat(innerRadiusRatio * 100, "%") : 0, outerRadius: "90%", stroke: "none", children: slices.map(function (slice) { return (jsxRuntime.jsx(recharts.Cell, { fill: slice.color }, slice.name)); }) }), jsxRuntime.jsx(recharts.Tooltip, { formatter: function (value) { return format(value); } })] }) }), isDonut && showTotal && (jsxRuntime.jsxs("div", { className: "aurora-donut-total pointer-events-none absolute inset-0 flex flex-col items-center justify-center", "aria-hidden": "true", children: [jsxRuntime.jsx("span", { className: "text-xs text-foreground-500", children: t.totalLabel }), jsxRuntime.jsx("span", { className: "text-xl font-semibold", children: format(total) })] }))] }), showLegend && (jsxRuntime.jsx("ul", { className: "mt-3 flex flex-wrap gap-3", children: slices.map(function (slice) { return (jsxRuntime.jsxs("li", { className: "flex items-center gap-1.5 text-xs", children: [jsxRuntime.jsx("span", { className: "h-2 w-2 rounded-full", style: { backgroundColor: slice.color }, "aria-hidden": "true" }), jsxRuntime.jsx("span", { children: slice.name }), jsxRuntime.jsxs("span", { className: "text-foreground-500", children: [Math.round(slice.percent * 100), "%"] })] }, slice.name)); }) }))] }));
|
|
3006
|
+
};
|
|
3007
|
+
|
|
2949
3008
|
var H1 = function (_a) {
|
|
2950
3009
|
var children = _a.children, className = _a.className, props = __rest(_a, ["children", "className"]);
|
|
2951
3010
|
return (jsxRuntime.jsx("h1", __assign({ className: react.cn("text-xl font-bold", className) }, props, { children: children })));
|
|
@@ -3011,12 +3070,12 @@ var NotificationButton = function (_a) {
|
|
|
3011
3070
|
};
|
|
3012
3071
|
NotificationButton.displayName = "NotificationButton";
|
|
3013
3072
|
|
|
3014
|
-
var DEFAULT_TRANSLATIONS$
|
|
3073
|
+
var DEFAULT_TRANSLATIONS$a = {
|
|
3015
3074
|
logout: "Cerrar sesión",
|
|
3016
3075
|
};
|
|
3017
3076
|
var HeaderComponent = function (_a) {
|
|
3018
3077
|
var notificationCount = _a.notificationCount, options = _a.options, onMenuClick = _a.onMenuClick, onLogout = _a.onLogout, _b = _a.translations, translations = _b === void 0 ? {} : _b, breadcrumbs = _a.breadcrumbs, extraContent = _a.extraContent, _c = _a.showMenuButton, showMenuButton = _c === void 0 ? true : _c, onNotificationClick = _a.onNotificationClick, onOptionSelect = _a.onOptionSelect, onBreadcrumbClick = _a.onBreadcrumbClick;
|
|
3019
|
-
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$
|
|
3078
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$a), translations);
|
|
3020
3079
|
return (jsxRuntime.jsx("header", { className: "header__container", children: jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-full", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [showMenuButton && (jsxRuntime.jsx(react.Button, { className: "sm:hidden", isIconOnly: true, variant: "light", startContent: jsxRuntime.jsx(IconComponent, { icon: "solar:hamburger-menu-linear" }), onPress: onMenuClick })), breadcrumbs && breadcrumbs.length > 0 && (jsxRuntime.jsx(BreadcrumbsComponent, { items: breadcrumbs, onItemClick: onBreadcrumbClick }))] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [extraContent, jsxRuntime.jsx(NotificationButton, { notificationCount: notificationCount, onPress: onNotificationClick }), jsxRuntime.jsx(ConfigMenu, { options: options, onLogout: onLogout, onOptionSelect: onOptionSelect, translations: t })] })] }) }));
|
|
3021
3080
|
};
|
|
3022
3081
|
HeaderComponent.displayName = "Header";
|
|
@@ -3140,7 +3199,7 @@ KanbanColumn.displayName = "KanbanColumn";
|
|
|
3140
3199
|
* Traducciones por defecto en español.
|
|
3141
3200
|
* Se mezclan con las traducciones proporcionadas por el usuario.
|
|
3142
3201
|
*/
|
|
3143
|
-
var DEFAULT_TRANSLATIONS$
|
|
3202
|
+
var DEFAULT_TRANSLATIONS$9 = {
|
|
3144
3203
|
dropHere: "Soltar aquí",
|
|
3145
3204
|
emptyMessage: "No hay elementos",
|
|
3146
3205
|
};
|
|
@@ -3174,7 +3233,7 @@ var columnGapClasses = {
|
|
|
3174
3233
|
var KanbanComponent = function (_a) {
|
|
3175
3234
|
var columns = _a.columns, renderItem = _a.renderItem, onCardClick = _a.onCardClick, onItemMove = _a.onItemMove, isDraggable = _a.isDraggable, cardClassName = _a.cardClassName, isCardClickable = _a.isCardClickable, className = _a.className, _b = _a.columnWidth, columnWidth = _b === void 0 ? "280px" : _b, _c = _a.columnGap, columnGap = _c === void 0 ? "md" : _c, _d = _a.horizontalScroll, horizontalScroll = _d === void 0 ? true : _d, columnMaxHeight = _a.columnMaxHeight, renderColumnHeader = _a.renderColumnHeader, renderEmptyState = _a.renderEmptyState, _e = _a.translations, translations = _e === void 0 ? {} : _e, onLoadMore = _a.onLoadMore;
|
|
3176
3235
|
// Mezclar traducciones del usuario con las por defecto
|
|
3177
|
-
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$
|
|
3236
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$9), translations);
|
|
3178
3237
|
// Determinar si drag está habilitado
|
|
3179
3238
|
var dragEnabled = isDraggable !== null && isDraggable !== void 0 ? isDraggable : !!onItemMove;
|
|
3180
3239
|
// Estado del drag actual
|
|
@@ -3518,7 +3577,7 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
|
|
|
3518
3577
|
});
|
|
3519
3578
|
MenuNavList.displayName = "MenuNavList";
|
|
3520
3579
|
|
|
3521
|
-
var DEFAULT_TRANSLATIONS$
|
|
3580
|
+
var DEFAULT_TRANSLATIONS$8 = {
|
|
3522
3581
|
menuLabel: "Menú",
|
|
3523
3582
|
closeSidebarAriaLabel: "Cerrar menú lateral",
|
|
3524
3583
|
mobileNavAriaLabel: "Navegación móvil",
|
|
@@ -3536,7 +3595,7 @@ var MenuComponent = React.memo(function Menu(_a) {
|
|
|
3536
3595
|
var commerceInfo = _a.commerceInfo, userInfo = _a.userInfo, helpButton = _a.helpButton, isOpenSidebar = _a.isOpenSidebar, onOpenSidebarChange = _a.onOpenSidebarChange, menuItems = _a.menuItems, mobileBottomBarGroupKey = _a.mobileBottomBarGroupKey, _d = _a.showNativeMenu, showNativeMenu = _d === void 0 ? true : _d, onUserInfoClick = _a.onUserInfoClick, _e = _a.translations, translations = _e === void 0 ? {} : _e;
|
|
3537
3596
|
var _f = React.useState(false), isCollapsed = _f[0], setIsCollapsed = _f[1];
|
|
3538
3597
|
var _g = React.useState(false), logoError = _g[0], setLogoError = _g[1];
|
|
3539
|
-
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$
|
|
3598
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$8), translations);
|
|
3540
3599
|
var selectedKey = React.useMemo(function () {
|
|
3541
3600
|
var _a, _b, _c;
|
|
3542
3601
|
if (menuItems.selectedPath) {
|
|
@@ -3820,7 +3879,7 @@ var MenuClawNavItem = function (_a) {
|
|
|
3820
3879
|
};
|
|
3821
3880
|
MenuClawNavItem.displayName = "MenuClawNavItem";
|
|
3822
3881
|
|
|
3823
|
-
var DEFAULT_TRANSLATIONS$
|
|
3882
|
+
var DEFAULT_TRANSLATIONS$7 = {
|
|
3824
3883
|
menuLabel: "Menú",
|
|
3825
3884
|
closeSidebarAriaLabel: "Cerrar menú lateral",
|
|
3826
3885
|
mobileNavAriaLabel: "Navegación móvil",
|
|
@@ -3858,7 +3917,7 @@ var MenuClaw = React.memo(function MenuClaw(_a) {
|
|
|
3858
3917
|
var _b, _c;
|
|
3859
3918
|
var userInfo = _a.userInfo, helpButton = _a.helpButton, menuItems = _a.menuItems, history = _a.history, isOpenSidebar = _a.isOpenSidebar, onOpenSidebarChange = _a.onOpenSidebarChange, mobileBottomBarGroupKey = _a.mobileBottomBarGroupKey, _d = _a.showNativeMenu, showNativeMenu = _d === void 0 ? true : _d, _e = _a.translations, translations = _e === void 0 ? {} : _e;
|
|
3860
3919
|
var _f = React.useState(false), isCollapsed = _f[0], setIsCollapsed = _f[1];
|
|
3861
|
-
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$
|
|
3920
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$7), translations);
|
|
3862
3921
|
var selectedKey = React.useMemo(function () {
|
|
3863
3922
|
var _a, _b, _c;
|
|
3864
3923
|
if (menuItems.selectedPath) {
|
|
@@ -4290,13 +4349,6 @@ var Phone = function (_a) {
|
|
|
4290
4349
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
4291
4350
|
};
|
|
4292
4351
|
}, [isDropdownOpen]);
|
|
4293
|
-
// El dropdown se portea a `body` con posición absoluta fija; cerrarlo cuando
|
|
4294
|
-
// un ancestro hace scroll para que no quede flotando fuera de lugar.
|
|
4295
|
-
useCloseOnAncestorScroll({
|
|
4296
|
-
isOpen: isDropdownOpen,
|
|
4297
|
-
onClose: function () { return setIsDropdownOpen(false); },
|
|
4298
|
-
contentRef: portalDropdownRef,
|
|
4299
|
-
});
|
|
4300
4352
|
var handleCountrySelect = function (country) {
|
|
4301
4353
|
setSelectedCountry(country);
|
|
4302
4354
|
setIsDropdownOpen(false);
|
|
@@ -4368,6 +4420,64 @@ var PromotionalBanner = function (_a) {
|
|
|
4368
4420
|
}, variant: "bordered", onClick: handleButtonClick }, buttonProps, { children: finalButtonText })), showCloseButton && (jsxRuntime.jsx("div", { className: "flex flex-1 justify-end", children: jsxRuntime.jsx(react.Button, { isIconOnly: true, "aria-label": t.closeButtonLabel, className: "-m-1", size: "lg", variant: "bordered", onClick: handleClose, children: jsxRuntime.jsx(IconComponent, { "aria-hidden": "true", className: "text-default-500", icon: "lucide:x", size: "md" }) }) }))] }));
|
|
4369
4421
|
};
|
|
4370
4422
|
|
|
4423
|
+
/** Paleta categórica por defecto: primary/secondary/success/warning/danger de BeweOS. */
|
|
4424
|
+
var DEFAULT_RANKED_BAR_COLORS = [
|
|
4425
|
+
"#006fee",
|
|
4426
|
+
"#7828c8",
|
|
4427
|
+
"#17c964",
|
|
4428
|
+
"#f5a524",
|
|
4429
|
+
"#f31260",
|
|
4430
|
+
];
|
|
4431
|
+
function safeValue(value) {
|
|
4432
|
+
return Number.isFinite(value) && value > 0 ? value : 0;
|
|
4433
|
+
}
|
|
4434
|
+
function computeMax(data) {
|
|
4435
|
+
return data.reduce(function (max, d) { return Math.max(max, safeValue(d.value)); }, 0);
|
|
4436
|
+
}
|
|
4437
|
+
/**
|
|
4438
|
+
* `true` cuando no hay datos o todos los valores son 0 — mismo criterio que el
|
|
4439
|
+
* `NotData` legacy de Guru.js.
|
|
4440
|
+
*/
|
|
4441
|
+
function isRankedBarListEmpty(data) {
|
|
4442
|
+
return data.length === 0 || computeMax(data) === 0;
|
|
4443
|
+
}
|
|
4444
|
+
/**
|
|
4445
|
+
* Resuelve el ancho de cada barra como porcentaje del **valor máximo del set**
|
|
4446
|
+
* (no del total) — igual que `BusinessStage.js` legacy (`100 * quantity / max`),
|
|
4447
|
+
* y el color final de cada fila.
|
|
4448
|
+
*/
|
|
4449
|
+
function computeBars(data, palette) {
|
|
4450
|
+
if (palette === void 0) { palette = DEFAULT_RANKED_BAR_COLORS; }
|
|
4451
|
+
var max = computeMax(data);
|
|
4452
|
+
return data.map(function (item, index) {
|
|
4453
|
+
var _a;
|
|
4454
|
+
var value = safeValue(item.value);
|
|
4455
|
+
return __assign(__assign({}, item), { value: value, color: (_a = item.color) !== null && _a !== void 0 ? _a : palette[index % palette.length], percent: max > 0 ? (value / max) * 100 : 0 });
|
|
4456
|
+
});
|
|
4457
|
+
}
|
|
4458
|
+
|
|
4459
|
+
var DEFAULT_TRANSLATIONS$6 = {
|
|
4460
|
+
emptyState: "Sin datos para mostrar",
|
|
4461
|
+
};
|
|
4462
|
+
/**
|
|
4463
|
+
* RankedBarList - Lista de barras horizontales escaladas al valor máximo del
|
|
4464
|
+
* set (no al total) — mismo criterio visual que `BusinessStage.js` legacy.
|
|
4465
|
+
* No reordena las filas: el llamador decide el orden (por relevancia, por
|
|
4466
|
+
* etapa del funnel, etc.).
|
|
4467
|
+
*/
|
|
4468
|
+
var RankedBarList = function (_a) {
|
|
4469
|
+
var data = _a.data, colors = _a.colors, formatValue = _a.formatValue, _b = _a.showValue, showValue = _b === void 0 ? true : _b, _c = _a.barHeight, barHeight = _c === void 0 ? 8 : _c, _d = _a.translations, translations = _d === void 0 ? {} : _d, className = _a.className;
|
|
4470
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$6), translations);
|
|
4471
|
+
if (isRankedBarListEmpty(data)) {
|
|
4472
|
+
return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx(P, { children: t.emptyState }) }));
|
|
4473
|
+
}
|
|
4474
|
+
var bars = computeBars(data, colors);
|
|
4475
|
+
var format = function (value) {
|
|
4476
|
+
return formatValue ? formatValue(value) : String(value);
|
|
4477
|
+
};
|
|
4478
|
+
return (jsxRuntime.jsx("div", { className: ["flex flex-col gap-3", className].filter(Boolean).join(" "), children: bars.map(function (bar) { return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-2", children: [jsxRuntime.jsx(P, { className: "truncate", children: bar.label }), showValue && (jsxRuntime.jsx("span", { className: "text-sm font-medium text-foreground", children: format(bar.value) }))] }), jsxRuntime.jsx("div", { className: "w-full rounded-full bg-default-100", style: { height: barHeight }, children: jsxRuntime.jsx("div", { className: "h-full rounded-full", style: { width: "".concat(bar.percent, "%"), backgroundColor: bar.color } }) })] }, bar.label)); }) }));
|
|
4479
|
+
};
|
|
4480
|
+
|
|
4371
4481
|
var VALID_STEP_COLORS = [
|
|
4372
4482
|
"primary",
|
|
4373
4483
|
"secondary",
|
|
@@ -5425,7 +5535,7 @@ var ScheduleRow = function (_a) {
|
|
|
5425
5535
|
// Return slots exactly as they are - no automatic additions
|
|
5426
5536
|
return slots;
|
|
5427
5537
|
};
|
|
5428
|
-
return (jsxRuntime.jsxs("div", { className: "flex flex-col w-full gap-y-4 last:border-b-0 last:mb-0 last:pb-0 border-b border-default-200 xs:py-4 xl:p-4 first:pt-0", children: [jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between", children: [jsxRuntime.jsxs("div", { className: "flex xs:space-x-2 sm:space-x-4", children: [jsxRuntime.jsx("h3", { className: "text-small font-semibold text-default-900 capitalize", children: day }), jsxRuntime.jsx(react.Chip, { size: "sm", color: daySchedule.isOpen ? "primary" : "default", className: "text-background", children: daySchedule.isOpen ? t.open : t.closed })] }), jsxRuntime.jsxs("div", { className: "flex xs:gap-2 sm:gap-5", children: [jsxRuntime.jsx(Switch, { size: "sm", color: "primary", isSelected: daySchedule.isOpen, onValueChange: handleToggleDay }), showCopyToAll && onCopyToAll && (jsxRuntime.jsx(Button, { size: "sm", variant: "bordered", onPress: function () { return onCopyToAll(day); }, children: t.copyToAll }))] })] }), daySchedule.isOpen && (jsxRuntime.jsx("div", { className: "flex flex-col justify-around gap-y-3 ", children: getSlotsToDisplay().map(function (slot, index) {
|
|
5538
|
+
return (jsxRuntime.jsxs("div", { className: "flex flex-col w-full gap-y-4 last:border-b-0 last:mb-0 last:pb-0 border-b border-default-200 xs:py-4 xl:p-4 first:pt-0", children: [jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between", children: [jsxRuntime.jsxs("div", { className: "flex items-center xs:space-x-2 sm:space-x-4", children: [jsxRuntime.jsx("h3", { className: "text-small font-semibold text-default-900 capitalize w-24 shrink-0", children: day }), jsxRuntime.jsx(react.Chip, { size: "sm", color: daySchedule.isOpen ? "primary" : "default", className: "text-background", children: daySchedule.isOpen ? t.open : t.closed })] }), jsxRuntime.jsxs("div", { className: "flex xs:gap-2 sm:gap-5", children: [jsxRuntime.jsx(Switch, { size: "sm", color: "primary", isSelected: daySchedule.isOpen, onValueChange: handleToggleDay }), showCopyToAll && onCopyToAll && (jsxRuntime.jsx(Button, { size: "sm", variant: "bordered", onPress: function () { return onCopyToAll(day); }, children: t.copyToAll }))] })] }), daySchedule.isOpen && (jsxRuntime.jsx("div", { className: "flex flex-col justify-around gap-y-3 ", children: getSlotsToDisplay().map(function (slot, index) {
|
|
5429
5539
|
var slotsToDisplay = getSlotsToDisplay();
|
|
5430
5540
|
var isLastSlot = index === slotsToDisplay.length - 1;
|
|
5431
5541
|
var isSlotFilled = slot.from && slot.to;
|
|
@@ -5559,6 +5669,59 @@ var SocialMediaPreview = function (_a) {
|
|
|
5559
5669
|
}
|
|
5560
5670
|
};
|
|
5561
5671
|
|
|
5672
|
+
var paddingClasses = {
|
|
5673
|
+
sm: "p-4",
|
|
5674
|
+
md: "p-6",
|
|
5675
|
+
lg: "p-8",
|
|
5676
|
+
};
|
|
5677
|
+
|
|
5678
|
+
/**
|
|
5679
|
+
* Card genérica siguiendo las reglas de diseño BeweOS basada en HeroUI.
|
|
5680
|
+
*
|
|
5681
|
+
* Reglas aplicadas:
|
|
5682
|
+
* - Shadow: none, sm, md, lg (configurable)
|
|
5683
|
+
* - Radius: sm (por defecto, configurable)
|
|
5684
|
+
* - Padding configurable (sm, md, lg)
|
|
5685
|
+
* - Hereda de HeroUI Card con personalización BeweOS
|
|
5686
|
+
*/
|
|
5687
|
+
var Card = function (_a) {
|
|
5688
|
+
var children = _a.children, _b = _a.className, className = _b === void 0 ? "" : _b, _c = _a.shadow, shadow = _c === void 0 ? "sm" : _c, _d = _a.radius, radius = _d === void 0 ? "sm" : _d, _e = _a.padding, padding = _e === void 0 ? "md" : _e, props = __rest(_a, ["children", "className", "shadow", "radius", "padding"]);
|
|
5689
|
+
var paddingClass = paddingClasses[padding];
|
|
5690
|
+
var combinedClassName = [paddingClass, className].filter(Boolean).join(" ");
|
|
5691
|
+
return (jsxRuntime.jsx(react.Card, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
|
|
5692
|
+
};
|
|
5693
|
+
|
|
5694
|
+
var DEFAULT_TRANSLATIONS$5 = {
|
|
5695
|
+
trendUpAriaLabel: "Tendencia al alza",
|
|
5696
|
+
trendDownAriaLabel: "Tendencia a la baja",
|
|
5697
|
+
trendNeutralAriaLabel: "Sin variación",
|
|
5698
|
+
};
|
|
5699
|
+
var TREND_COLOR_CLASS = {
|
|
5700
|
+
positive: "text-success",
|
|
5701
|
+
negative: "text-danger",
|
|
5702
|
+
neutral: "text-foreground-500",
|
|
5703
|
+
};
|
|
5704
|
+
var TREND_ARIA_KEY = {
|
|
5705
|
+
positive: "trendUpAriaLabel",
|
|
5706
|
+
negative: "trendDownAriaLabel",
|
|
5707
|
+
neutral: "trendNeutralAriaLabel",
|
|
5708
|
+
};
|
|
5709
|
+
/**
|
|
5710
|
+
* StatTile - Tarjeta KPI compacta: ícono opcional + título + valor + tendencia opcional.
|
|
5711
|
+
*
|
|
5712
|
+
* Cubre el patrón "tile" (título + número, con o sin ícono/variación) que se repite en
|
|
5713
|
+
* varios dashboards de estadísticas y no encajaba en ningún chart existente de AuraUI.
|
|
5714
|
+
*/
|
|
5715
|
+
var StatTile = function (_a) {
|
|
5716
|
+
var _b;
|
|
5717
|
+
var title = _a.title, value = _a.value, icon = _a.icon, trend = _a.trend, _c = _a.translations, translations = _c === void 0 ? {} : _c, className = _a.className, _d = _a.padding, padding = _d === void 0 ? "md" : _d, cardProps = __rest(_a, ["title", "value", "icon", "trend", "translations", "className", "padding"]);
|
|
5718
|
+
var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$5), translations);
|
|
5719
|
+
var direction = (_b = trend === null || trend === void 0 ? void 0 : trend.direction) !== null && _b !== void 0 ? _b : "neutral";
|
|
5720
|
+
return (jsxRuntime.jsxs(Card, __assign({ padding: padding, className: ["flex flex-row items-center gap-3", className]
|
|
5721
|
+
.filter(Boolean)
|
|
5722
|
+
.join(" ") }, cardProps, { children: [icon && (jsxRuntime.jsx("span", { className: "shrink-0 text-foreground-600", "aria-hidden": "true", children: icon })), jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [jsxRuntime.jsx(P, { className: "truncate", children: title }), jsxRuntime.jsxs("div", { className: "flex items-baseline gap-2", children: [jsxRuntime.jsx(H3, { className: "text-2xl font-semibold", children: value }), trend && (jsxRuntime.jsx("span", { className: "text-xs font-medium ".concat(TREND_COLOR_CLASS[direction]), "aria-label": t[TREND_ARIA_KEY[direction]], children: trend.value }))] })] })] })));
|
|
5723
|
+
};
|
|
5724
|
+
|
|
5562
5725
|
function AuraTable(_a) {
|
|
5563
5726
|
var columns = _a.columns, items = _a.items, renderCell = _a.renderCell, children = _a.children, props = __rest(_a, ["columns", "items", "renderCell", "children"]);
|
|
5564
5727
|
return (jsxRuntime.jsxs(react.Table, __assign({ removeWrapper: true, radius: "none" }, props, { children: [jsxRuntime.jsx(react.TableHeader, { columns: columns, children: function (column) { return jsxRuntime.jsx(react.TableColumn, { children: column.label }, column.key); } }), jsxRuntime.jsx(react.TableBody, { items: items, children: function (item) { return (jsxRuntime.jsx(react.TableRow, { children: function (columnKey) { return (jsxRuntime.jsx(react.TableCell, { children: renderCell ? renderCell(item, columnKey) : children })); } }, item.id)); } })] })));
|
|
@@ -7614,18 +7777,19 @@ var SelectFilter = function (_a) {
|
|
|
7614
7777
|
// MULTISELECT FILTER
|
|
7615
7778
|
// =========================================================================
|
|
7616
7779
|
var MultiSelectFilter = function (_a) {
|
|
7617
|
-
var _b, _c, _d, _e;
|
|
7780
|
+
var _b, _c, _d, _e, _f;
|
|
7618
7781
|
var filter = _a.filter, value = _a.value, onChange = _a.onChange, translations = _a.translations;
|
|
7619
7782
|
var triggerRef = React.useRef(null);
|
|
7620
|
-
var
|
|
7621
|
-
var
|
|
7622
|
-
var
|
|
7783
|
+
var _g = React.useState(null), triggerWidthPx = _g[0], setTriggerWidthPx = _g[1];
|
|
7784
|
+
var _h = React.useState(false), isOpen = _h[0], setIsOpen = _h[1];
|
|
7785
|
+
var _j = React.useState(""), searchQuery = _j[0], setSearchQuery = _j[1];
|
|
7623
7786
|
var currentValues = (value === null || value === void 0 ? void 0 : value.values) || [];
|
|
7624
7787
|
var searchable = filter.searchable === true;
|
|
7625
7788
|
var searchPlaceholder = (_b = translations === null || translations === void 0 ? void 0 : translations.multiselectSearchPlaceholder) !== null && _b !== void 0 ? _b : "Buscar opciones...";
|
|
7626
7789
|
var moreLabelTemplate = (_c = translations === null || translations === void 0 ? void 0 : translations.multiselectMoreLabel) !== null && _c !== void 0 ? _c : "+{more} más";
|
|
7627
7790
|
var noResultsText = (_d = translations === null || translations === void 0 ? void 0 : translations.multiselectNoResults) !== null && _d !== void 0 ? _d : "Sin coincidencias";
|
|
7628
|
-
var
|
|
7791
|
+
var selectPlaceholderTemplate = (_e = translations === null || translations === void 0 ? void 0 : translations.selectPlaceholder) !== null && _e !== void 0 ? _e : "Seleccionar {label}";
|
|
7792
|
+
var triggerPlaceholder = selectPlaceholderTemplate.replace("{label}", filter.title.toLowerCase());
|
|
7629
7793
|
var filteredData = React.useMemo(function () {
|
|
7630
7794
|
if (!searchable) {
|
|
7631
7795
|
return filter.data;
|
|
@@ -7680,7 +7844,7 @@ var MultiSelectFilter = function (_a) {
|
|
|
7680
7844
|
}
|
|
7681
7845
|
onChange({ values: Array.from(keys) });
|
|
7682
7846
|
}, [filteredData, onChange]);
|
|
7683
|
-
var maxVisibleChips = Math.min(Math.max((
|
|
7847
|
+
var maxVisibleChips = Math.min(Math.max((_f = filter.maxVisibleChips) !== null && _f !== void 0 ? _f : 5, 1), 24);
|
|
7684
7848
|
var triggerSelection = React.useMemo(function () {
|
|
7685
7849
|
if (currentValues.length === 0) {
|
|
7686
7850
|
return { visible: [], overflow: 0 };
|
|
@@ -7834,7 +7998,24 @@ var DateFilter = function (_a) {
|
|
|
7834
7998
|
}
|
|
7835
7999
|
return undefined;
|
|
7836
8000
|
};
|
|
7837
|
-
|
|
8001
|
+
// Solo se reenvían las claves definidas: pasar `undefined` explícito pisaría
|
|
8002
|
+
// los defaults en español de DateSelector (el spread copia la clave igual).
|
|
8003
|
+
var dateSelectorTranslations = {};
|
|
8004
|
+
if ((translations === null || translations === void 0 ? void 0 : translations.dayOption) !== undefined) {
|
|
8005
|
+
dateSelectorTranslations.dayOption = translations.dayOption;
|
|
8006
|
+
}
|
|
8007
|
+
if ((translations === null || translations === void 0 ? void 0 : translations.dateRangeOption) !== undefined) {
|
|
8008
|
+
dateSelectorTranslations.dateRangeOption = translations.dateRangeOption;
|
|
8009
|
+
}
|
|
8010
|
+
if ((translations === null || translations === void 0 ? void 0 : translations.selectDateAriaLabel) !== undefined) {
|
|
8011
|
+
dateSelectorTranslations.selectDateAriaLabel =
|
|
8012
|
+
translations.selectDateAriaLabel;
|
|
8013
|
+
}
|
|
8014
|
+
if ((translations === null || translations === void 0 ? void 0 : translations.selectDateRangeAriaLabel) !== undefined) {
|
|
8015
|
+
dateSelectorTranslations.selectDateRangeAriaLabel =
|
|
8016
|
+
translations.selectDateRangeAriaLabel;
|
|
8017
|
+
}
|
|
8018
|
+
return (jsxRuntime.jsx(DateSelector, { initialType: getInitialType(), initialDate: getInitialDate(), initialDateRange: getInitialDateRange(), onChange: handleDateSelectorChange, translations: dateSelectorTranslations, className: "w-full" }));
|
|
7838
8019
|
};
|
|
7839
8020
|
// =========================================================================
|
|
7840
8021
|
// TEXT FILTER
|
|
@@ -8655,6 +8836,7 @@ function TagsFilter(_a) {
|
|
|
8655
8836
|
var _m = React.useState(0), autocompleteKey = _m[0], setAutocompleteKey = _m[1];
|
|
8656
8837
|
var selectedList = value !== null && value !== void 0 ? value : [];
|
|
8657
8838
|
var _o = React.useState(null), sentinelNode = _o[0], setSentinelNode = _o[1];
|
|
8839
|
+
var rootRef = React.useRef(null);
|
|
8658
8840
|
React.useEffect(function () {
|
|
8659
8841
|
if (!onLoadMore || !sentinelNode || !hasMore) {
|
|
8660
8842
|
return;
|
|
@@ -8726,7 +8908,7 @@ function TagsFilter(_a) {
|
|
|
8726
8908
|
if (isLoading) {
|
|
8727
8909
|
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" }) }) }));
|
|
8728
8910
|
}
|
|
8729
|
-
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) {
|
|
8911
|
+
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) {
|
|
8730
8912
|
setInputValue(v);
|
|
8731
8913
|
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(v);
|
|
8732
8914
|
}, selectedKey: null, items: itemsWithSentinel, onSelectionChange: handleAutocompleteSelection,
|
|
@@ -8745,7 +8927,16 @@ function TagsFilter(_a) {
|
|
|
8745
8927
|
// intercepts pointer events, blocking the parent modal's close button.
|
|
8746
8928
|
// shouldCloseOnInteractOutside already handles closing on outside clicks.
|
|
8747
8929
|
isNonModal: true,
|
|
8748
|
-
|
|
8930
|
+
// El desplegable se renderiza en un portal, así que el campo de
|
|
8931
|
+
// búsqueda queda FUERA de él y una pulsación sobre el texto contaba
|
|
8932
|
+
// como interacción externa. Al cerrarse, el FocusScope devolvía el
|
|
8933
|
+
// foco con un `.focus()` que abortaba el gesto de selección que el
|
|
8934
|
+
// navegador acababa de iniciar: de ahí que arrastrar o hacer doble
|
|
8935
|
+
// clic no seleccionara nada y solo quedara borrar letra a letra
|
|
8936
|
+
// (con el teclado sí funcionaba, porque no pasa por aquí).
|
|
8937
|
+
// Las pulsaciones dentro del componente dejan de contar como
|
|
8938
|
+
// externas; las de fuera siguen cerrando el desplegable igual.
|
|
8939
|
+
shouldCloseOnInteractOutside: function (element) { var _a; return !((_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.contains(element)); },
|
|
8749
8940
|
}, listboxProps: {
|
|
8750
8941
|
className: "max-h-[200px] overflow-y-auto",
|
|
8751
8942
|
}, className: "w-full", children: function (item) {
|
|
@@ -8947,28 +9138,6 @@ ModalBody.displayName = "ModalBody";
|
|
|
8947
9138
|
|
|
8948
9139
|
var ModalFooter = react.ModalFooter;
|
|
8949
9140
|
|
|
8950
|
-
var paddingClasses = {
|
|
8951
|
-
sm: "p-4",
|
|
8952
|
-
md: "p-6",
|
|
8953
|
-
lg: "p-8",
|
|
8954
|
-
};
|
|
8955
|
-
|
|
8956
|
-
/**
|
|
8957
|
-
* Card genérica siguiendo las reglas de diseño BeweOS basada en HeroUI.
|
|
8958
|
-
*
|
|
8959
|
-
* Reglas aplicadas:
|
|
8960
|
-
* - Shadow: none, sm, md, lg (configurable)
|
|
8961
|
-
* - Radius: sm (por defecto, configurable)
|
|
8962
|
-
* - Padding configurable (sm, md, lg)
|
|
8963
|
-
* - Hereda de HeroUI Card con personalización BeweOS
|
|
8964
|
-
*/
|
|
8965
|
-
var Card = function (_a) {
|
|
8966
|
-
var children = _a.children, _b = _a.className, className = _b === void 0 ? "" : _b, _c = _a.shadow, shadow = _c === void 0 ? "sm" : _c, _d = _a.radius, radius = _d === void 0 ? "sm" : _d, _e = _a.padding, padding = _e === void 0 ? "md" : _e, props = __rest(_a, ["children", "className", "shadow", "radius", "padding"]);
|
|
8967
|
-
var paddingClass = paddingClasses[padding];
|
|
8968
|
-
var combinedClassName = [paddingClass, className].filter(Boolean).join(" ");
|
|
8969
|
-
return (jsxRuntime.jsx(react.Card, __assign({ shadow: shadow, radius: radius, className: combinedClassName }, props, { children: children })));
|
|
8970
|
-
};
|
|
8971
|
-
|
|
8972
9141
|
/**
|
|
8973
9142
|
* Tooltip - Componente BeweOS basado en HeroUI.
|
|
8974
9143
|
*
|
|
@@ -9538,10 +9707,13 @@ exports.ColorPicker = ColorPicker;
|
|
|
9538
9707
|
exports.ColorSelector = ColorSelector;
|
|
9539
9708
|
exports.ContentCarousel = ContentCarousel;
|
|
9540
9709
|
exports.Currency = Currency;
|
|
9710
|
+
exports.DEFAULT_DONUT_COLORS = DEFAULT_DONUT_COLORS;
|
|
9541
9711
|
exports.DEFAULT_PREDEFINED_COLORS = DEFAULT_PREDEFINED_COLORS;
|
|
9712
|
+
exports.DEFAULT_RANKED_BAR_COLORS = DEFAULT_RANKED_BAR_COLORS;
|
|
9542
9713
|
exports.DatePicker = DatePicker;
|
|
9543
9714
|
exports.DateRangePicker = DateRangePicker;
|
|
9544
9715
|
exports.DateSelector = DateSelector;
|
|
9716
|
+
exports.DonutChart = DonutChart;
|
|
9545
9717
|
exports.DrawerFilters = DrawerFilters;
|
|
9546
9718
|
exports.EmailPreview = EmailPreview;
|
|
9547
9719
|
exports.GlobalToast = GlobalToast;
|
|
@@ -9574,6 +9746,7 @@ exports.Phone = Phone;
|
|
|
9574
9746
|
exports.PromotionalBanner = PromotionalBanner;
|
|
9575
9747
|
exports.REGISTERED_THEME_COLORS = REGISTERED_THEME_COLORS;
|
|
9576
9748
|
exports.RangeFilter = RangeFilter;
|
|
9749
|
+
exports.RankedBarList = RankedBarList;
|
|
9577
9750
|
exports.RowSteps = RowSteps;
|
|
9578
9751
|
exports.SEGMENTATION_DEFAULT_TRANSLATIONS = DEFAULT_TRANSLATIONS$1;
|
|
9579
9752
|
exports.ScheduleRow = ScheduleRow;
|
|
@@ -9584,6 +9757,7 @@ exports.SimpleLineChart = SimpleLineChart;
|
|
|
9584
9757
|
exports.SocialMediaBar = SocialMediaBar;
|
|
9585
9758
|
exports.SocialMediaCarousel = SocialMediaCarousel;
|
|
9586
9759
|
exports.SocialMediaPreview = SocialMediaPreview;
|
|
9760
|
+
exports.StatTile = StatTile;
|
|
9587
9761
|
exports.StepIndicator = StepIndicator;
|
|
9588
9762
|
exports.SwitchComponent = Switch;
|
|
9589
9763
|
exports.THEME_COLOR_HEX_MAP = THEME_COLOR_HEX_MAP;
|
|
@@ -9604,6 +9778,10 @@ exports.Wizard = Wizard;
|
|
|
9604
9778
|
exports.WizardNavigation = WizardNavigation;
|
|
9605
9779
|
exports.WizardSidebar = WizardSidebar;
|
|
9606
9780
|
exports.applyCustomPrimaryColor = applyCustomPrimaryColor;
|
|
9781
|
+
exports.computeBars = computeBars;
|
|
9782
|
+
exports.computeMax = computeMax;
|
|
9783
|
+
exports.computeSlices = computeSlices;
|
|
9784
|
+
exports.computeTotal = computeTotal;
|
|
9607
9785
|
exports.createCurrencyFormatter = createCurrencyFormatter;
|
|
9608
9786
|
exports.defaultCountries = uniqueCountries;
|
|
9609
9787
|
exports.defaultCurrencyOptions = defaultCurrencyOptions;
|
|
@@ -9617,9 +9795,11 @@ exports.getSelectedKeyFromPath = getSelectedKeyFromPath;
|
|
|
9617
9795
|
exports.hexToThemeColor = hexToThemeColor;
|
|
9618
9796
|
exports.hslToCssValue = hslToCssValue;
|
|
9619
9797
|
exports.isAuroraFullThemeId = isAuroraFullThemeId;
|
|
9798
|
+
exports.isDonutEmpty = isDonutEmpty;
|
|
9620
9799
|
exports.isExactThemeColor = isExactThemeColor;
|
|
9621
9800
|
exports.isGroupState = isGroupState;
|
|
9622
9801
|
exports.isHexColor = isHexColor;
|
|
9802
|
+
exports.isRankedBarListEmpty = isRankedBarListEmpty;
|
|
9623
9803
|
exports.isSegmentationGroup = isSegmentationGroup;
|
|
9624
9804
|
exports.removeCustomPrimaryColor = removeCustomPrimaryColor;
|
|
9625
9805
|
exports.sizeMap = sizeMap;
|