@beweco/aurora-ui 0.1.52 → 0.1.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.
Files changed (31) hide show
  1. package/dist/assets/css/styles.css +1 -1
  2. package/dist/index.cjs.js +148 -77
  3. package/dist/index.esm.js +147 -76
  4. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  5. package/dist/types/components/breadcrumbs/Breadcrumbs.types.d.ts +5 -0
  6. package/dist/types/components/breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  7. package/dist/types/components/header/Header.d.ts.map +1 -1
  8. package/dist/types/components/header/Header.types.d.ts +25 -4
  9. package/dist/types/components/header/Header.types.d.ts.map +1 -1
  10. package/dist/types/components/header/_internal/config-menu/ConfigMenu.d.ts.map +1 -1
  11. package/dist/types/components/header/_internal/config-menu/ConfigMenu.types.d.ts +7 -4
  12. package/dist/types/components/header/_internal/config-menu/ConfigMenu.types.d.ts.map +1 -1
  13. package/dist/types/components/header/index.d.ts +1 -1
  14. package/dist/types/components/header/index.d.ts.map +1 -1
  15. package/dist/types/components/menu/Menu.d.ts +1 -6
  16. package/dist/types/components/menu/Menu.d.ts.map +1 -1
  17. package/dist/types/components/menu/Menu.types.d.ts +38 -7
  18. package/dist/types/components/menu/Menu.types.d.ts.map +1 -1
  19. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/MenuMobileBottomBar.d.ts +4 -0
  20. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/MenuMobileBottomBar.d.ts.map +1 -0
  21. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/MenuMobileBottomBar.types.d.ts +12 -0
  22. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/MenuMobileBottomBar.types.d.ts.map +1 -0
  23. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/index.d.ts +3 -0
  24. package/dist/types/components/menu/_internal/menu-mobile-bottom-bar/index.d.ts.map +1 -0
  25. package/dist/types/components/menu/_internal/menu-nav-list/MenuNavList.d.ts.map +1 -1
  26. package/dist/types/components/menu/index.d.ts +3 -1
  27. package/dist/types/components/menu/index.d.ts.map +1 -1
  28. package/dist/types/components/social-media-preview/SocialMediaPreview.d.ts.map +1 -1
  29. package/dist/types/components/social-media-preview/SocialMediaPreview.types.d.ts +4 -0
  30. package/dist/types/components/social-media-preview/SocialMediaPreview.types.d.ts.map +1 -1
  31. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
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, Breadcrumbs, BreadcrumbItem, DropdownSection, Badge, Spinner, ListboxItem, Popover, PopoverTrigger, Tooltip as Tooltip$1, PopoverContent, Listbox, ListboxSection, Avatar, CardBody, CardFooter, 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, SelectItem, Drawer, DrawerContent, DrawerBody, 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, Breadcrumbs, BreadcrumbItem, DropdownSection, Badge, Spinner, ListboxItem, Popover, PopoverTrigger, Tooltip as Tooltip$1, 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, 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';
@@ -1675,20 +1675,23 @@ var H4 = function (_a) {
1675
1675
  * ```
1676
1676
  */
1677
1677
  var BreadcrumbsComponent = function (_a) {
1678
- var items = _a.items, children = _a.children, heroUIProps = __rest(_a, ["items", "children"]);
1678
+ var items = _a.items, children = _a.children, onItemClick = _a.onItemClick, heroUIProps = __rest(_a, ["items", "children", "onItemClick"]);
1679
1679
  return (jsx(Breadcrumbs, __assign({}, heroUIProps, { children: items
1680
- ? items.map(function (item, index) { return (jsx(BreadcrumbItem, { href: item.href, isCurrent: item.isCurrent, children: item.label }, "".concat(item.href || item.label, "-").concat(index))); })
1680
+ ? items.map(function (item, index) { return (jsx(BreadcrumbItem, __assign({}, (onItemClick && item.href && !item.isCurrent
1681
+ ? { onPress: function () { return onItemClick(item.href); } }
1682
+ : { href: item.href }), { isCurrent: item.isCurrent, children: item.label }), "".concat(item.href || item.label, "-").concat(index))); })
1681
1683
  : children })));
1682
1684
  };
1683
1685
 
1684
1686
  var ConfigMenu = function (_a) {
1685
- var _b;
1686
- var options = _a.options, onLogout = _a.onLogout, translations = _a.translations;
1687
- return (jsxs(Dropdown, { className: "min-w-40", children: [jsx(DropdownTrigger, { children: jsx(Button$1, { isIconOnly: true, color: "default", startContent: jsx(IconComponent, { icon: "solar:settings-linear" }) }) }), jsxs(DropdownMenu, { "aria-label": "Configuration", children: [jsx(DropdownSection, { showDivider: true, className: "mb-0", children: options.map(function (item) { return (jsx(DropdownItem, { href: item.href, className: "data-[hover=true]:bg-primary-100 data-[hover=true]:text-default-700", classNames: {
1687
+ var options = _a.options, onLogout = _a.onLogout, onOptionSelect = _a.onOptionSelect, translations = _a.translations;
1688
+ return (jsxs(Dropdown, { className: "min-w-40", children: [jsx(DropdownTrigger, { children: jsx(Button$1, { isIconOnly: true, color: "default", startContent: jsx(IconComponent, { icon: "solar:settings-linear" }) }) }), jsxs(DropdownMenu, { "aria-label": "Configuration", children: [jsx(DropdownSection, { showDivider: true, className: "mb-0", children: options.map(function (item) { return (jsx(DropdownItem, __assign({}, (onOptionSelect
1689
+ ? { onPress: function () { return onOptionSelect(item.href); } }
1690
+ : { href: item.href }), { className: "data-[hover=true]:bg-primary-100 data-[hover=true]:text-default-700", classNames: {
1688
1691
  base: "text-default-500",
1689
- }, startContent: item.icon ? jsx(IconComponent, { icon: item.icon }) : undefined, children: item.label }, item.label)); }) }), jsx(DropdownSection, { children: jsx(DropdownItem, { onPress: onLogout, className: "data-[hover=true]:bg-primary-100 data-[hover=true]:text-default-700", classNames: {
1692
+ }, startContent: item.icon ? jsx(IconComponent, { icon: item.icon }) : undefined, children: item.label }), item.label)); }) }), jsx(DropdownSection, { children: jsx(DropdownItem, { onPress: onLogout, className: "data-[hover=true]:bg-primary-100 data-[hover=true]:text-default-700", classNames: {
1690
1693
  base: "text-default-500",
1691
- }, startContent: jsx(IconComponent, { icon: "solar:logout-2-linear" }), children: (_b = translations === null || translations === void 0 ? void 0 : translations.logout) !== null && _b !== void 0 ? _b : "Logout" }, "logout") })] })] }));
1694
+ }, startContent: jsx(IconComponent, { icon: "solar:logout-2-linear" }), children: translations === null || translations === void 0 ? void 0 : translations.logout }, "logout") })] })] }));
1692
1695
  };
1693
1696
  ConfigMenu.displayName = "ConfigMenu";
1694
1697
 
@@ -1701,9 +1704,13 @@ var NotificationButton = function (_a) {
1701
1704
  };
1702
1705
  NotificationButton.displayName = "NotificationButton";
1703
1706
 
1707
+ var DEFAULT_TRANSLATIONS$4 = {
1708
+ logout: "Cerrar sesión",
1709
+ };
1704
1710
  var HeaderComponent = function (_a) {
1705
- var notificationCount = _a.notificationCount, options = _a.options, onMenuClick = _a.onMenuClick, onLogout = _a.onLogout, translations = _a.translations, breadcrumbs = _a.breadcrumbs, onNotificationClick = _a.onNotificationClick;
1706
- return (jsx("header", { className: "header__container", children: jsxs("div", { className: "flex items-center justify-between w-full", children: [jsxs("div", { className: "flex items-center gap-4", children: [jsx(Button$1, { className: "sm:hidden", isIconOnly: true, variant: "light", startContent: jsx(IconComponent, { icon: "solar:hamburger-menu-linear" }), onPress: onMenuClick }), breadcrumbs && breadcrumbs.length > 0 && (jsx(BreadcrumbsComponent, { items: breadcrumbs }))] }), jsxs("div", { className: "flex items-center gap-4", children: [jsx(NotificationButton, { notificationCount: notificationCount, onPress: onNotificationClick }), jsx(ConfigMenu, { options: options, onLogout: onLogout, translations: translations })] })] }) }));
1711
+ var notificationCount = _a.notificationCount, options = _a.options, onMenuClick = _a.onMenuClick, onLogout = _a.onLogout, _b = _a.translations, translations = _b === void 0 ? {} : _b, breadcrumbs = _a.breadcrumbs, onNotificationClick = _a.onNotificationClick, onOptionSelect = _a.onOptionSelect, onBreadcrumbClick = _a.onBreadcrumbClick;
1712
+ var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$4), translations);
1713
+ return (jsx("header", { className: "header__container", children: jsxs("div", { className: "flex items-center justify-between w-full", children: [jsxs("div", { className: "flex items-center gap-4", children: [jsx(Button$1, { className: "sm:hidden", isIconOnly: true, variant: "light", startContent: jsx(IconComponent, { icon: "solar:hamburger-menu-linear" }), onPress: onMenuClick }), breadcrumbs && breadcrumbs.length > 0 && (jsx(BreadcrumbsComponent, { items: breadcrumbs, onItemClick: onBreadcrumbClick }))] }), jsxs("div", { className: "flex items-center gap-4", children: [jsx(NotificationButton, { notificationCount: notificationCount, onPress: onNotificationClick }), jsx(ConfigMenu, { options: options, onLogout: onLogout, onOptionSelect: onOptionSelect, translations: t })] })] }) }));
1707
1714
  };
1708
1715
  HeaderComponent.displayName = "Header";
1709
1716
 
@@ -1826,7 +1833,7 @@ KanbanColumn.displayName = "KanbanColumn";
1826
1833
  * Traducciones por defecto en español.
1827
1834
  * Se mezclan con las traducciones proporcionadas por el usuario.
1828
1835
  */
1829
- var DEFAULT_TRANSLATIONS$2 = {
1836
+ var DEFAULT_TRANSLATIONS$3 = {
1830
1837
  dropHere: "Soltar aquí",
1831
1838
  emptyMessage: "No hay elementos",
1832
1839
  };
@@ -1860,7 +1867,7 @@ var columnGapClasses = {
1860
1867
  var KanbanComponent = function (_a) {
1861
1868
  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;
1862
1869
  // Mezclar traducciones del usuario con las por defecto
1863
- var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$2), translations);
1870
+ var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$3), translations);
1864
1871
  // Determinar si drag está habilitado
1865
1872
  var dragEnabled = isDraggable !== null && isDraggable !== void 0 ? isDraggable : !!onItemMove;
1866
1873
  // Estado del drag actual
@@ -1968,6 +1975,24 @@ var ImagePreview = function (_a) {
1968
1975
  : undefined, role: isClickable ? "button" : undefined, tabIndex: isClickable ? 0 : undefined, "aria-label": isClickable ? t.clickableImageAriaLabel : undefined }), showRemoveButton && onRemove && (jsx("button", { type: "button", onClick: function () { return handleRemove(image.id || "", index); }, "aria-label": t.removeButtonAriaLabel, className: "\n\t\t\t\t\t\t\t\t\tabsolute -top-2 -right-2 \n\t\t\t\t\t\t\t\t\tp-1 rounded-full \n\t\t\t\t\t\t\t\t\tbg-danger-500 hover:bg-danger-600 \n\t\t\t\t\t\t\t\t\ttext-white \n\t\t\t\t\t\t\t\t\tcursor-pointer \n\t\t\t\t\t\t\t\t\ttransition-colors\n\t\t\t\t\t\t\t\t\tfocus:outline-none \n\t\t\t\t\t\t\t\t\tfocus:ring-2 \n\t\t\t\t\t\t\t\t\tfocus:ring-danger-400 \n\t\t\t\t\t\t\t\t\tfocus:ring-offset-2\n\t\t\t\t\t\t\t\t", children: jsx(IconComponent, { size: size === "micro" ? "sm" : "md", icon: "solar:trash-bin-minimalistic-outline" }) }))] }) }, image.id || index)); }) }));
1969
1976
  };
1970
1977
 
1978
+ var EnumMenuNavListItem;
1979
+ (function (EnumMenuNavListItem) {
1980
+ EnumMenuNavListItem["Nest"] = "nest";
1981
+ })(EnumMenuNavListItem || (EnumMenuNavListItem = {}));
1982
+
1983
+ var MAX_VISIBLE_ITEMS = 4;
1984
+ var MenuMobileBottomBar = React.memo(function MenuMobileBottomBar(_a) {
1985
+ var items = _a.items, selectedKey = _a.selectedKey, onSelect = _a.onSelect, onMenuPress = _a.onMenuPress, menuLabel = _a.menuLabel, navAriaLabel = _a.navAriaLabel, _b = _a.forceVisible, forceVisible = _b === void 0 ? false : _b;
1986
+ var visibleItems = items.slice(0, MAX_VISIBLE_ITEMS);
1987
+ var handleItemPress = useCallback(function (key, href) {
1988
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(key, href);
1989
+ }, [onSelect]);
1990
+ return (jsx("nav", { className: cn("menu-mobile-bottom-bar", forceVisible && "menu-mobile-bottom-bar--force-visible"), "aria-label": navAriaLabel, children: jsxs("div", { className: "menu-mobile-bottom-bar__container", children: [visibleItems.map(function (item) {
1991
+ var isSelected = selectedKey === item.key;
1992
+ return (jsxs("button", { type: "button", className: cn("menu-mobile-bottom-bar__item", isSelected && "menu-mobile-bottom-bar__item--active"), onClick: function () { return handleItemPress(item.key, item.href); }, "aria-current": isSelected ? "page" : undefined, "aria-label": item.title, children: [item.icon && (jsx(IconComponent, { icon: item.icon, size: "md", className: "menu-mobile-bottom-bar__icon" })), jsx("span", { className: "menu-mobile-bottom-bar__label", children: item.title })] }, item.key));
1993
+ }), jsxs("button", { type: "button", className: "menu-mobile-bottom-bar__item", onClick: onMenuPress, "aria-label": menuLabel, children: [jsx(IconComponent, { icon: "solar:hamburger-menu-linear", size: "md", className: "menu-mobile-bottom-bar__icon" }), jsx("span", { className: "menu-mobile-bottom-bar__label", children: menuLabel })] })] }) }));
1994
+ });
1995
+
1971
1996
  function normalizeClass(value) {
1972
1997
  if (typeof value === "string") {
1973
1998
  return value || undefined;
@@ -2000,11 +2025,6 @@ var getItemClasses = function (isCollapsed, itemClassesProp) {
2000
2025
  })) }));
2001
2026
  };
2002
2027
 
2003
- var EnumMenuNavListItem;
2004
- (function (EnumMenuNavListItem) {
2005
- EnumMenuNavListItem["Nest"] = "nest";
2006
- })(EnumMenuNavListItem || (EnumMenuNavListItem = {}));
2007
-
2008
2028
  /**
2009
2029
  * @component MenuNavList
2010
2030
  * @description A versatile navigation list component that can be displayed in an expanded or collapsed state.
@@ -2026,34 +2046,43 @@ var EnumMenuNavListItem;
2026
2046
  */
2027
2047
  var MenuNavList = React.forwardRef(function (_a, ref) {
2028
2048
  var items = _a.items, isCollapsed = _a.isCollapsed, defaultSelectedKey = _a.defaultSelectedKey, onSelect = _a.onSelect, hideEndContent = _a.hideEndContent, _b = _a.sectionClasses, sectionClassesProp = _b === void 0 ? {} : _b, _c = _a.itemClasses, itemClassesProp = _c === void 0 ? {} : _c, iconClassName = _a.iconClassName, classNames = _a.classNames, className = _a.className, props = __rest(_a, ["items", "isCollapsed", "defaultSelectedKey", "onSelect", "hideEndContent", "sectionClasses", "itemClasses", "iconClassName", "classNames", "className"]);
2029
- var _d = useState(defaultSelectedKey), selected = _d[0], setSelected = _d[1];
2049
+ // Componente totalmente controlado: la única fuente de verdad es defaultSelectedKey (menuItems.selectedKey).
2050
+ // Sin estado interno se evita que la selección quede "pegada" al navegar sin recargar.
2051
+ var selectedKey = defaultSelectedKey;
2030
2052
  // Component styles
2031
2053
  var sectionClasses = getSectionClasses(isCollapsed, sectionClassesProp);
2032
2054
  var itemClasses = getItemClasses(isCollapsed, itemClassesProp);
2033
- // Handles the click event on an item, updating the selection state
2034
- // and notifying the consumer via onSelect for programmatic navigation.
2035
- // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
2036
- var handleItemPress = React.useCallback(function (item, parentKey) {
2037
- var keySelected = typeof parentKey === "string" ? parentKey : item.key;
2038
- setSelected(keySelected);
2039
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(keySelected, item.href);
2055
+ // Al hacer clic solo notificamos al padre; el padre actualiza selectedKey y re-renderiza.
2056
+ var handleItemPress = React.useCallback(function (item) {
2057
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.key, item.href);
2040
2058
  if (document.activeElement instanceof HTMLElement) {
2041
2059
  document.activeElement.blur();
2042
2060
  }
2043
- }, [setSelected, onSelect]);
2061
+ }, [onSelect]);
2062
+ // Renders a sub-item (text-only, hierarchy line, pill selected state).
2063
+ // Aplicamos estilos de selección por key porque el Listbox anidado puede no inyectar data-selected.
2064
+ var renderSubItem = React.useCallback(function (item, parentKey) {
2065
+ var _a;
2066
+ item.href; var itemProps = __rest(item, ["href"]);
2067
+ var isSelected = item.key === selectedKey;
2068
+ return (createElement(ListboxItem, __assign({}, itemProps, { key: item.key, textValue: item.title, title: item.title, startContent: null, endContent: (_a = item.endContent) !== null && _a !== void 0 ? _a : null, "aria-selected": isSelected, "data-menu-subitem-selected": isSelected ? "true" : "false", classNames: {
2069
+ base: cn("min-h-9 rounded-large px-3 py-2 menu-nav-list__sub-item", "text-default-500 data-[hover=true]:text-default-700", "data-[selected=true]:bg-default-100 data-[selected=true]:text-foreground data-[selected=true]:font-semibold"),
2070
+ }, onPress: function () { return handleItemPress(item); } })));
2071
+ }, [handleItemPress, selectedKey]);
2044
2072
  // Renders the item displayed inside the Popover when the menu is collapsed.
2045
2073
  var renderCompactItem = React.useCallback(function (item, parentKey) {
2046
- var _a, _b;
2047
- item.href; var itemProps = __rest(item, ["href"]);
2048
- return (createElement(ListboxItem, __assign({}, itemProps, { key: item.key, endContent: (_a = item.endContent) !== null && _a !== void 0 ? _a : null, startContent: item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : (((_b = item.startContent) !== null && _b !== void 0 ? _b : null)), textValue: item.title, title: item.title, className: "data-[hover=true]:text-default-600", onPress: function () { return handleItemPress(item, parentKey); } })));
2049
- }, [handleItemPress, iconClassName]);
2074
+ return renderSubItem(item, parentKey);
2075
+ }, [renderSubItem]);
2050
2076
  // Renders a nested item, i.e., an item that has sub-items.
2051
2077
  // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
2052
2078
  var renderNestItem = React.useCallback(function (item) {
2053
- var _a, _b, _c, _d, _e, _f, _g;
2079
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
2054
2080
  var isNestType = item.items &&
2055
2081
  ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
2056
2082
  (item === null || item === void 0 ? void 0 : item.type) === EnumMenuNavListItem.Nest;
2083
+ // Abrir el grupo si el selectedKey actual es uno de sus sub-ítems
2084
+ var isSelectedKeyInThisNest = Boolean(selectedKey && ((_b = item.items) === null || _b === void 0 ? void 0 : _b.length)) &&
2085
+ ((_d = (_c = item.items) === null || _c === void 0 ? void 0 : _c.some(function (child) { return child.key === selectedKey; })) !== null && _d !== void 0 ? _d : false);
2057
2086
  item.href; var itemProps = __rest(item, ["href"]);
2058
2087
  return (createElement(ListboxItem, __assign({}, itemProps, { key: item.key, classNames: {
2059
2088
  base: cn({
@@ -2065,22 +2094,21 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
2065
2094
  }, "rounded-large"),
2066
2095
  }, endContent: isCollapsed || isNestType || hideEndContent
2067
2096
  ? null
2068
- : ((_b = item.endContent) !== null && _b !== void 0 ? _b : 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" })) : (((_c = item.startContent) !== null && _c !== void 0 ? _c : null)), title: isCollapsed || isNestType ? null : item.title }),
2069
- isCollapsed && isNestType ? (jsxs(Popover, { placement: "right", offset: 10, children: [jsx(PopoverTrigger, { children: jsx("div", { className: "flex w-full items-center justify-center", children: jsx(Tooltip$1, { content: item.title, placement: "right", classNames: {
2070
- base: "text-default-500",
2071
- }, children: jsx("div", { className: "flex w-full 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" })) : (((_d = item.startContent) !== null && _d !== void 0 ? _d : null)) }) }) }) }), jsx(PopoverContent, { className: "p-0", children: jsxs("div", { className: "min-w-[200px] rounded-large p-2", children: [jsx("div", { className: "p-2 text-small font-semibold text-default-500", children: item.title }), jsx(Listbox, { className: "mt-0.5 text-default-500", "aria-label": "Nested menu items", items: item.items, variant: "flat", children: item.items && ((_e = item.items) === null || _e === void 0 ? void 0 : _e.length) > 0
2072
- ? item.items.map(function (child) {
2073
- return renderCompactItem(child, item.key);
2074
- })
2075
- : renderCompactItem(item) })] }) })] })) : null,
2076
- !isCollapsed && isNestType ? (jsx(Accordion, { className: "p-0", children: jsx(AccordionItem, { "aria-label": item.title, classNames: {
2077
- heading: "pr-3 group-data-[selected=true]:bg-primary-100 rounded-large",
2078
- trigger: "p-0",
2079
- content: "py-0 pl-4",
2080
- }, title: item.icon ? (jsxs("div", { className: "flex h-11 items-center gap-2 px-3 py-1.5", children: [jsx(IconComponent, { className: cn("text-default-500 group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" }), jsx("span", { className: "text-small font-medium text-default-500 group-data-[selected=true]:text-default-600", children: item.title })] })) : (((_f = item.startContent) !== null && _f !== void 0 ? _f : null)), children: item.items && ((_g = item.items) === null || _g === void 0 ? void 0 : _g.length) > 0 ? (jsx(Listbox, { className: "mt-0.5 text-default-500", classNames: {
2081
- list: cn("border-l border-default-200 pl-4"),
2082
- }, items: item.items, variant: "flat", children: item.items.map(function (child) { return renderItem(child, item.key); }) })) : (renderItem(item)) }, item.key) })) : null));
2083
- }, [isCollapsed, hideEndContent, iconClassName, items, selected]);
2097
+ : ((_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 }),
2098
+ 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: {
2099
+ base: "text-default-500",
2100
+ }, 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: {
2101
+ list: "border-l border-default-200 pl-4 ml-2 gap-0.5",
2102
+ }, "aria-label": "Nested menu items", items: (_h = item.items) !== null && _h !== void 0 ? _h : [item], variant: "flat", hideSelectedIcon: true, selectedKeys: [selectedKey], selectionMode: "single", children: function (child) {
2103
+ var _a;
2104
+ return ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length)
2105
+ ? renderCompactItem(child)
2106
+ : renderCompactItem(item);
2107
+ } })] }) })] })) : null,
2108
+ !isCollapsed && isNestType ? (jsxs("details", { className: "group/details w-full p-0", "aria-label": item.title, open: isSelectedKeyInThisNest, children: [jsx("summary", { className: cn("flex h-11 list-none cursor-pointer items-center gap-2 rounded-large px-3 py-1.5 pr-3", "text-default-500 hover:bg-default-100 [&::-webkit-details-marker]:hidden [&::marker]:hidden"), children: item.icon ? (jsxs(Fragment, { children: [jsx(IconComponent, { className: cn("text-default-500 group-open/details:text-default-600", iconClassName), icon: item.icon, size: "lg" }), jsx("span", { className: "text-small font-medium text-default-500 group-open/details:text-default-600 flex-1", children: item.title }), jsxs("span", { className: "flex shrink-0 items-center text-default-400", children: [jsx(IconComponent, { className: "hidden group-open/details:inline-block", icon: "solar:alt-arrow-down-outline", size: "sm", "aria-hidden": true }), jsx(IconComponent, { className: "inline-block group-open/details:hidden", icon: "solar:alt-arrow-right-outline", size: "sm", "aria-hidden": true })] })] })) : (jsxs(Fragment, { children: [(_j = item.startContent) !== null && _j !== void 0 ? _j : null, jsxs("span", { className: "ml-auto flex shrink-0 items-center text-default-400", children: [jsx(IconComponent, { className: "hidden group-open/details:inline-block", icon: "solar:alt-arrow-down-outline", size: "sm", "aria-hidden": true }), jsx(IconComponent, { className: "inline-block group-open/details:hidden", icon: "solar:alt-arrow-right-outline", size: "sm", "aria-hidden": true })] })] })) }), jsx("div", { className: "py-0 pl-4", children: item.items && ((_k = item.items) === null || _k === void 0 ? void 0 : _k.length) > 0 ? (jsx(Listbox, { className: "mt-0.5", classNames: {
2109
+ list: cn("border-l border-default-200 pl-4 ml-2 gap-0.5"),
2110
+ }, items: item.items, variant: "flat", hideSelectedIcon: true, selectedKeys: [selectedKey], selectionMode: "single", children: function (child) { return renderSubItem(child); } })) : (renderItem(item)) })] })) : null));
2111
+ }, [isCollapsed, hideEndContent, iconClassName, items, selectedKey, renderSubItem]);
2084
2112
  // Renders a simple item (without children) in the navigation list.
2085
2113
  // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
2086
2114
  var renderItem = React.useCallback(function (item, parentKey) {
@@ -2091,15 +2119,15 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
2091
2119
  if (isNestType) {
2092
2120
  return renderNestItem(item);
2093
2121
  }
2094
- var isItemSelected = selected === item.key;
2122
+ var isItemSelected = selectedKey === item.key;
2095
2123
  item.href; var itemProps = __rest(item, ["href"]);
2096
- 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, parentKey); }, "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: {
2124
+ 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: {
2097
2125
  base: "text-default-500",
2098
2126
  }, 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));
2099
2127
  },
2100
2128
  // eslint-disable-next-line react-hooks/exhaustive-deps
2101
2129
  [isCollapsed, hideEndContent, iconClassName, itemClasses === null || itemClasses === void 0 ? void 0 : itemClasses.base]);
2102
- return (jsx(Listbox, __assign({ ref: ref, hideSelectedIcon: true, as: "nav", className: cn("list-none", className), classNames: __assign(__assign({}, classNames), { list: cn("items-center", classNames === null || classNames === void 0 ? void 0 : classNames.list) }), color: "default", itemClasses: __assign(__assign({}, itemClasses), { base: cn("px-3 min-h-11 rounded-large h-[44px] data-[selected=true]:bg-primary-100", itemClasses === null || itemClasses === void 0 ? void 0 : itemClasses.base), title: cn("text-small font-medium text-default-500 group-data-[selected=true]:text-default-600 ", itemClasses === null || itemClasses === void 0 ? void 0 : itemClasses.title) }), items: items, selectedKeys: [selected], selectionMode: "single", variant: "flat" }, props, { children: function (item) {
2130
+ return (jsx(Listbox, __assign({ ref: ref, hideSelectedIcon: true, as: "nav", className: cn("list-none", className), classNames: __assign(__assign({}, classNames), { list: cn("items-center", classNames === null || classNames === void 0 ? void 0 : classNames.list) }), color: "default", itemClasses: __assign(__assign({}, itemClasses), { base: cn("px-3 min-h-11 rounded-large h-[44px] data-[selected=true]:bg-primary-100", itemClasses === null || itemClasses === void 0 ? void 0 : itemClasses.base), title: cn("text-small font-medium text-default-500 group-data-[selected=true]:text-default-600 ", itemClasses === null || itemClasses === void 0 ? void 0 : itemClasses.title) }), items: items, selectedKeys: [selectedKey], selectionMode: "single", variant: "flat" }, props, { children: function (item) {
2103
2131
  var _a, _b;
2104
2132
  return item.items &&
2105
2133
  ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
@@ -2108,42 +2136,85 @@ var MenuNavList = React.forwardRef(function (_a, ref) {
2108
2136
  });
2109
2137
  MenuNavList.displayName = "MenuNavList";
2110
2138
 
2139
+ var DEFAULT_TRANSLATIONS$2 = {
2140
+ menuLabel: "Menú",
2141
+ closeSidebarAriaLabel: "Cerrar menú lateral",
2142
+ mobileNavAriaLabel: "Navegación móvil",
2143
+ logoAlt: "Logo de",
2144
+ notDefinedLabel: "no definido",
2145
+ };
2111
2146
  /**
2112
2147
  * Sidebar menu component for navigation and user actions.
2113
- * @param commerceInfo - Object with logo and name of the company.
2114
- * @param userInfo - Object with user avatar, name, and email.
2115
- * @param helpButton - Help button configuration.
2116
- * @param upgradeCard - Optional upgrade card configuration.
2117
- * @param isOpenSidebar - Controls sidebar visibility.
2118
- * @param onOpenSidebarChange - Callback to open/close sidebar.
2148
+ * On mobile, shows a bottom navigation bar with items from the specified group.
2119
2149
  */
2120
2150
  var MenuComponent = React.memo(function Menu(_a) {
2121
- var commerceInfo = _a.commerceInfo, userInfo = _a.userInfo, helpButton = _a.helpButton, upgradeCard = _a.upgradeCard, isOpenSidebar = _a.isOpenSidebar, onOpenSidebarChange = _a.onOpenSidebarChange, menuItems = _a.menuItems;
2122
- // State to control menu collapse on desktop devices
2123
- var _b = React.useState(false), isCollapsed = _b[0], setIsCollapsed = _b[1];
2124
- // Memoized handlers for performance
2151
+ var _b, _c;
2152
+ 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, _e = _a.translations, translations = _e === void 0 ? {} : _e;
2153
+ var _f = React.useState(false), isCollapsed = _f[0], setIsCollapsed = _f[1];
2154
+ var _g = React.useState(false), logoError = _g[0], setLogoError = _g[1];
2155
+ var t = __assign(__assign({}, DEFAULT_TRANSLATIONS$2), translations);
2156
+ var commerceName = (typeof (commerceInfo === null || commerceInfo === void 0 ? void 0 : commerceInfo.name) === "string" && commerceInfo.name.trim()) ||
2157
+ t.notDefinedLabel;
2158
+ var userName = (typeof (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) === "string" && userInfo.name.trim()) ||
2159
+ t.notDefinedLabel;
2160
+ var userRole = (typeof (userInfo === null || userInfo === void 0 ? void 0 : userInfo.role) === "string" && userInfo.role.trim()) ||
2161
+ t.notDefinedLabel;
2162
+ var helpTitle = (typeof (helpButton === null || helpButton === void 0 ? void 0 : helpButton.title) === "string" && helpButton.title.trim()) ||
2163
+ t.notDefinedLabel;
2164
+ var hasValidLogo = typeof (commerceInfo === null || commerceInfo === void 0 ? void 0 : commerceInfo.logo) === "string" &&
2165
+ commerceInfo.logo.trim() !== "" &&
2166
+ !logoError;
2167
+ var bottomBarItems = useMemo(function () {
2168
+ if (!mobileBottomBarGroupKey)
2169
+ return [];
2170
+ var group = menuItems.items.find(function (item) { return item.key === mobileBottomBarGroupKey; });
2171
+ if (!(group === null || group === void 0 ? void 0 : group.items))
2172
+ return [];
2173
+ return group.items.filter(function (item) { return item.icon; });
2174
+ }, [mobileBottomBarGroupKey, menuItems.items]);
2125
2175
  var handleSidebarClose = useCallback(function () {
2126
2176
  onOpenSidebarChange === null || onOpenSidebarChange === void 0 ? void 0 : onOpenSidebarChange(false);
2127
2177
  }, [onOpenSidebarChange]);
2178
+ var handleSidebarOpen = useCallback(function () {
2179
+ onOpenSidebarChange === null || onOpenSidebarChange === void 0 ? void 0 : onOpenSidebarChange(true);
2180
+ }, [onOpenSidebarChange]);
2128
2181
  var handleCollapseToggle = useCallback(function () {
2129
2182
  setIsCollapsed(function (prev) { return !prev; });
2130
2183
  }, []);
2131
- var handleUpgradeClick = useCallback(function () {
2132
- if (upgradeCard) {
2133
- window.open(upgradeCard.buttonLink, "_blank");
2134
- }
2135
- }, [upgradeCard]);
2136
2184
  var handleHelpClick = useCallback(function () {
2137
- window.open(helpButton.redirect, "_blank");
2185
+ var _a;
2186
+ var url = (_a = helpButton === null || helpButton === void 0 ? void 0 : helpButton.redirect) === null || _a === void 0 ? void 0 : _a.trim();
2187
+ if (url)
2188
+ window.open(url, "_blank");
2138
2189
  }, [helpButton]);
2139
- if (!isOpenSidebar) {
2140
- return null;
2141
- }
2142
- return (jsxs(Fragment, { children: [jsx("button", { type: "button", "aria-label": "Close sidebar", className: "fixed inset-0 bg-black bg-opacity-40 z-40 xs:block sm:hidden", onClick: handleSidebarClose, style: { border: "none", padding: 0, margin: 0 } }), jsx("div", { className: "container__menu ".concat(isCollapsed
2190
+ // Menú lateral: al seleccionar ítem/sub-ítem cerrar en móvil. No hacer nada si es una sección (solo título).
2191
+ var handleMenuSelect = useCallback(function (key, href) {
2192
+ var _a;
2193
+ var isSectionKey = menuItems.items.some(function (it) {
2194
+ return it.key === key &&
2195
+ Array.isArray(it.items) &&
2196
+ it.items.length > 0 &&
2197
+ it.type !== EnumMenuNavListItem.Nest;
2198
+ });
2199
+ if (isSectionKey)
2200
+ return;
2201
+ onOpenSidebarChange === null || onOpenSidebarChange === void 0 ? void 0 : onOpenSidebarChange(false);
2202
+ (_a = menuItems.onSelect) === null || _a === void 0 ? void 0 : _a.call(menuItems, key, href, "sidebar");
2203
+ }, [onOpenSidebarChange, menuItems.onSelect, menuItems.items]);
2204
+ // Barra inferior: cerrar lateral y notificar con source 'bottomBar' para que la app no reabra el menú.
2205
+ var handleBottomBarSelect = useCallback(function (key, href) {
2206
+ var _a;
2207
+ onOpenSidebarChange === null || onOpenSidebarChange === void 0 ? void 0 : onOpenSidebarChange(false);
2208
+ (_a = menuItems.onSelect) === null || _a === void 0 ? void 0 : _a.call(menuItems, key, href, "bottomBar");
2209
+ }, [onOpenSidebarChange, menuItems.onSelect]);
2210
+ var showBottomBar = (mobileBottomBarGroupKey && bottomBarItems.length > 0) || showNativeMenu;
2211
+ return (jsxs(Fragment, { children: [showBottomBar && (jsx(MenuMobileBottomBar, { items: bottomBarItems, selectedKey: menuItems.selectedKey, onSelect: handleBottomBarSelect, onMenuPress: handleSidebarOpen, menuLabel: t.menuLabel, navAriaLabel: t.mobileNavAriaLabel, forceVisible: showNativeMenu && bottomBarItems.length === 0 })), jsx("button", { type: "button", "aria-label": t.closeSidebarAriaLabel, className: "menu-overlay ".concat(isOpenSidebar ? "menu-overlay--open" : ""), onClick: handleSidebarClose, tabIndex: isOpenSidebar ? 0 : -1 }), jsx("div", { className: "container__menu ".concat(isCollapsed
2143
2212
  ? "container__menu--collapsed"
2144
- : "container__menu--expanded"), children: jsxs("div", { className: "content__menu", children: [jsxs("div", { className: "content__menu--header", style: { flexDirection: isCollapsed ? "column-reverse" : "row" }, children: [jsxs("div", { className: "flex flex-row items-center justify-center ".concat(isCollapsed ? "gap-0" : "gap-2"), children: [jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-foreground", children: jsx("img", { src: commerceInfo.logo, alt: "Logo of ".concat(commerceInfo.name) }) }), jsx("span", { className: "collapsible-item text-small font-bold ", children: commerceInfo.name })] }), jsxs("div", { className: "flex items-center", children: [jsx(IconComponent, { icon: "material-symbols-light:close", size: "lg", className: "cursor-pointer block sm:hidden", onClick: handleSidebarClose }), jsx(IconComponent, { icon: isCollapsed
2213
+ : "container__menu--expanded", " ").concat(isOpenSidebar ? "container__menu--mobile-open" : ""), "aria-hidden": !isOpenSidebar, children: jsxs("div", { className: "content__menu", children: [jsxs("div", { className: "content__menu--header", style: {
2214
+ flexDirection: isCollapsed ? "column-reverse" : "row",
2215
+ }, children: [jsxs("div", { className: "flex flex-row items-center justify-center ".concat(isCollapsed ? "gap-0" : "gap-2"), children: [jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-full bg-foreground text-background", children: hasValidLogo ? (jsx("img", { src: commerceInfo.logo, alt: "".concat(t.logoAlt, " ").concat(commerceName), className: "h-full w-full object-cover", onError: function () { return setLogoError(true); } })) : (jsx(IconComponent, { icon: "solar:buildings-2-outline", size: "sm", className: "shrink-0", "aria-hidden": true })) }), jsx("span", { className: "collapsible-item text-small font-bold truncate min-w-0", children: commerceName })] }), jsxs("div", { className: "flex items-center", children: [jsx(IconComponent, { icon: "material-symbols-light:close", size: "lg", className: "cursor-pointer block sm:hidden", onClick: handleSidebarClose }), jsx(IconComponent, { icon: isCollapsed
2145
2216
  ? "solar:alt-arrow-right-outline"
2146
- : "solar:alt-arrow-left-outline", size: "lg", className: "hidden sm:block cursor-pointer", onClick: handleCollapseToggle })] })] }), jsx(Spacer, { y: 6 }), jsxs("div", { className: "content__menu--user ".concat(isCollapsed ? "gap-0" : "gap-3"), children: [jsx(Avatar, { size: "md", src: userInfo.avatar, color: userInfo.avatar === "" ? "warning" : "default", name: userInfo.name }), jsxs("div", { className: "collapsible-item flex flex-col", children: [jsx("p", { className: "text-small font-medium text-default-900", children: userInfo.name }), jsx("p", { className: "text-tiny text-default-400", children: userInfo.role })] })] }), jsx("div", { className: "".concat(!isCollapsed ? "flex-1" : "h-full", " min-h-0 py-6"), children: jsx("div", { className: "h-full overflow-y-auto pr-6 -mr-6 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: jsx(MenuNavList, { defaultSelectedKey: menuItems.selectedKey, items: menuItems.items, isCollapsed: isCollapsed, onSelect: menuItems.onSelect }) }) }), upgradeCard && (jsxs("div", { className: "collapsible-item relative", children: [jsxs(Card$1, { className: "border-none overflow-visible shadow-none", shadow: "sm", children: [jsxs(CardBody, { className: "items-center py-5 text-center gap-1", children: [jsx("h3", { className: "text-medium font-medium text-default-900", children: upgradeCard.title }), jsx("p", { className: "text-small text-default-500 pb-3 whitespace-normal", children: upgradeCard.description })] }), jsx(CardFooter, { className: "absolute justify-center", style: { bottom: "-30px" }, children: jsx(Button$1, { className: "px-10 shadow-md", color: "primary", radius: "full", variant: "shadow", onPress: handleUpgradeClick, children: upgradeCard.buttonText }) })] }), jsx(Spacer, { y: 9 })] })), jsx("div", { className: "mt-auto flex flex-col justify-center items-center", children: jsx(Button$1, { fullWidth: true, className: " text-default-500 data-[hover=true]:text-default-600", startContent: jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: isCollapsed, children: !isCollapsed && (jsx("span", { className: "collapsible-item", children: helpButton.title })) }) })] }) })] }));
2217
+ : "solar:alt-arrow-left-outline", size: "lg", className: "hidden sm:block cursor-pointer", onClick: handleCollapseToggle })] })] }), jsx(Spacer, { y: 6 }), jsxs("div", { className: "content__menu--user ".concat(isCollapsed ? "gap-0" : "gap-3"), children: [jsx(Avatar, { size: "md", src: ((_b = userInfo === null || userInfo === void 0 ? void 0 : userInfo.avatar) === null || _b === void 0 ? void 0 : _b.trim()) || undefined, color: !((_c = userInfo === null || userInfo === void 0 ? void 0 : userInfo.avatar) === null || _c === void 0 ? void 0 : _c.trim()) ? "warning" : "default", name: userName, className: "shrink-0" }), jsxs("div", { className: "collapsible-item flex min-w-0 flex-col overflow-hidden", children: [jsx("p", { className: "text-small font-medium text-default-900 truncate", children: userName }), jsx("p", { className: "text-tiny text-default-400 truncate", children: userRole })] })] }), jsx("div", { className: "".concat(!isCollapsed ? "flex-1" : "h-full", " min-h-0 py-6"), children: jsx("div", { className: "h-full overflow-y-auto pr-6 -mr-6 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: jsx(MenuNavList, { defaultSelectedKey: menuItems.selectedKey, items: menuItems.items, isCollapsed: isCollapsed, onSelect: handleMenuSelect }, menuItems.selectedKey) }) }), jsx("div", { className: "mt-auto flex flex-col justify-center items-center", children: jsx(Button$1, { fullWidth: true, className: " text-default-500 data-[hover=true]:text-default-600", startContent: jsx(IconComponent, { className: "text-default-500", icon: "solar:info-circle-line-duotone", size: "md" }), variant: "light", onPress: handleHelpClick, isIconOnly: isCollapsed, children: !isCollapsed && (jsx("span", { className: "collapsible-item truncate", children: helpTitle })) }) })] }) })] }));
2147
2218
  });
2148
2219
 
2149
2220
  var StepIndicator = function (_a) {
@@ -3545,7 +3616,7 @@ var defaultTranslations$3 = {
3545
3616
  * ```
3546
3617
  */
3547
3618
  var SocialMediaPreview = function (_a) {
3548
- var platform = _a.platform, imageUrl = _a.imageUrl, caption = _a.caption, _b = _a.variant, variant = _b === void 0 ? "full" : _b, _c = _a.postAspectRatio, postAspectRatio = _c === void 0 ? "square" : _c, _d = _a.showHeader, showHeader = _d === void 0 ? true : _d, _e = _a.maxCaptionLength, maxCaptionLength = _e === void 0 ? 125 : _e, onToggleCaption = _a.onToggleCaption, showFullCaption = _a.showFullCaption, username = _a.username, avatarUrl = _a.avatarUrl, _f = _a.translations, translations = _f === void 0 ? {} : _f, _g = _a.className, className = _g === void 0 ? "" : _g, _h = _a.imageProps, imageProps = _h === void 0 ? {} : _h;
3619
+ var platform = _a.platform, imageUrl = _a.imageUrl, caption = _a.caption, _b = _a.variant, variant = _b === void 0 ? "full" : _b, _c = _a.postAspectRatio, postAspectRatio = _c === void 0 ? "square" : _c, _d = _a.showHeader, showHeader = _d === void 0 ? true : _d, _e = _a.maxCaptionLength, maxCaptionLength = _e === void 0 ? 125 : _e, onToggleCaption = _a.onToggleCaption, showFullCaption = _a.showFullCaption, username = _a.username, avatarUrl = _a.avatarUrl, _f = _a.translations, translations = _f === void 0 ? {} : _f, _g = _a.className, className = _g === void 0 ? "" : _g, _h = _a.imageProps, imageProps = _h === void 0 ? {} : _h, _j = _a.showEditButton, showEditButton = _j === void 0 ? false : _j, onEditClick = _a.onEditClick;
3549
3620
  var t = __assign(__assign({}, defaultTranslations$3), translations);
3550
3621
  var displayUsername = username || t.username;
3551
3622
  var shouldTruncate = variant === "compact" && caption.length > maxCaptionLength;
@@ -3584,12 +3655,12 @@ var SocialMediaPreview = function (_a) {
3584
3655
  return renderInstagramPost();
3585
3656
  };
3586
3657
  var renderInstagramStory = function () { return (jsxs("div", { className: "relative w-full bg-gradient-to-b from-gray-900 to-gray-800 rounded-2xl shadow-2xl ".concat(className), style: { aspectRatio: "9/16", maxHeight: "640px" }, children: [imageUrl && (jsxs("div", { className: "absolute inset-0", children: [jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-full object-cover" }, imageProps)), jsx("div", { className: "absolute inset-0 bg-black bg-opacity-20" })] })), showHeader && (jsxs("div", { className: "absolute top-0 left-0 right-0 z-10 p-4", children: [jsx("div", { className: "w-full h-0.5 bg-white bg-opacity-30 rounded-full mb-3", children: jsx("div", { className: "h-full w-1/3 bg-white rounded-full" }) }), jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "w-8 h-8 rounded-full bg-gradient-to-br from-purple-500 via-pink-500 to-orange-500 flex items-center justify-center border-2 border-white", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-xs font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsx("span", { className: "text-sm font-semibold text-white drop-shadow-lg", children: displayUsername }), jsx("span", { className: "text-xs text-white text-opacity-90", children: "hace 5min" })] }), jsxs("div", { className: "flex items-center gap-3", children: [jsx(IconComponent, { icon: "solar:play-circle-bold", className: "text-lg text-white drop-shadow-lg" }), jsx(IconComponent, { icon: "solar:volume-loud-bold", className: "text-lg text-white drop-shadow-lg" }), jsx(IconComponent, { icon: "solar:menu-dots-bold", className: "text-lg text-white drop-shadow-lg" })] })] })] })), jsxs("div", { className: "absolute bottom-6 left-0 right-0 z-20 px-4 flex items-center gap-3", children: [jsx("input", { type: "text", placeholder: t.sendMessage, className: "flex-1 bg-transparent border-2 border-white border-opacity-70 rounded-full px-4 py-2 text-white placeholder-white placeholder-opacity-70 text-sm", readOnly: true }), jsx(IconComponent, { icon: "solar:heart-outline", className: "text-2xl text-white drop-shadow-lg" }), jsx(IconComponent, { icon: "solar:plain-outline", className: "text-2xl text-white drop-shadow-lg" })] })] })); };
3587
- var renderInstagramPost = function () { return (jsxs("div", { className: "flex flex-col bg-white dark:bg-gray-900 ".concat(variant === "full" ? "rounded-lg shadow-xl overflow-hidden" : "rounded-b-xl overflow-hidden", " h-full ").concat(className), children: [showHeader && (jsxs("div", { className: "flex items-center justify-between p-3 border-b border-gray-200 dark:border-gray-800", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "w-8 h-8 rounded-full bg-gradient-to-br from-purple-500 via-pink-500 to-orange-500 flex items-center justify-center", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-xs font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsx("span", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: displayUsername })] }), jsx(IconComponent, { icon: "solar:menu-dots-bold", className: "text-lg text-gray-900 dark:text-white" })] })), imageUrl && (jsx("div", { className: "relative w-full bg-black overflow-hidden rounded-none flex items-center justify-center", style: { aspectRatio: getAspectRatio() }, children: jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-full object-contain rounded-none", radius: "none" }, imageProps)) })), jsxs("div", { className: "flex-1 p-3 overflow-y-auto", children: [jsxs("div", { className: "flex items-center justify-between mb-2", children: [jsxs("div", { className: "flex items-center gap-4", children: [jsx(IconComponent, { icon: "solar:heart-bold", className: "text-xl text-gray-900 dark:text-white" }), jsx(IconComponent, { icon: "solar:chat-round-bold", className: "text-xl text-gray-900 dark:text-white" }), jsx(IconComponent, { icon: "solar:plain-bold", className: "text-xl text-gray-900 dark:text-white" })] }), jsx(IconComponent, { icon: "solar:bookmark-bold", className: "text-xl text-gray-900 dark:text-white" })] }), jsxs("div", { className: "text-sm text-left", children: [jsxs("div", { className: showFullCaption ? "overflow-y-auto" : "", style: { maxHeight: showFullCaption ? "150px" : "none" }, children: [jsx("span", { className: "font-semibold mr-2 text-gray-900 dark:text-white", children: displayUsername }), jsx("span", { className: "text-gray-800 dark:text-gray-200 whitespace-pre-wrap break-words", children: displayCaption })] }), shouldTruncate && onToggleCaption && variant !== "compact" && (jsx("button", { type: "button", onClick: function (e) {
3658
+ var renderInstagramPost = function () { return (jsxs("div", { className: "flex flex-col bg-white dark:bg-gray-900 ".concat(variant === "full" ? "rounded-lg shadow-xl overflow-hidden" : "rounded-b-xl overflow-hidden", " h-full ").concat(className), children: [showHeader && (jsxs("div", { className: "flex items-center justify-between p-3 border-b border-gray-200 dark:border-gray-800", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("div", { className: "w-8 h-8 rounded-full bg-gradient-to-br from-purple-500 via-pink-500 to-orange-500 flex items-center justify-center", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-xs font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsx("span", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: displayUsername })] }), jsx(IconComponent, { icon: "solar:menu-dots-bold", className: "text-lg text-gray-900 dark:text-white" })] })), imageUrl && (jsxs("div", { className: "relative w-full bg-black overflow-hidden rounded-none flex items-center justify-center", style: { aspectRatio: getAspectRatio() }, children: [jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-full object-contain rounded-none", radius: "none" }, imageProps)), showEditButton && typeof onEditClick === "function" && (jsx(Button$1, { isIconOnly: true, variant: "solid", color: "default", className: "absolute top-4 right-4 z-30 bg-background/90 dark:bg-background/90 backdrop-blur-sm rounded-full shadow-lg hover:bg-background/100 transition-colors border border-divider", onPress: onEditClick, "aria-label": "Editar imagen", children: jsx(IconComponent, { icon: "solar:pen-2-outline", className: "text-gray-900" }) }))] })), jsxs("div", { className: "flex-1 p-3 overflow-y-auto", children: [jsxs("div", { className: "flex items-center justify-between mb-2", children: [jsxs("div", { className: "flex items-center gap-4", children: [jsx(IconComponent, { icon: "solar:heart-bold", className: "text-xl text-gray-900 dark:text-white" }), jsx(IconComponent, { icon: "solar:chat-round-bold", className: "text-xl text-gray-900 dark:text-white" }), jsx(IconComponent, { icon: "solar:plain-bold", className: "text-xl text-gray-900 dark:text-white" })] }), jsx(IconComponent, { icon: "solar:bookmark-bold", className: "text-xl text-gray-900 dark:text-white" })] }), jsxs("div", { className: "text-sm text-left", children: [jsxs("div", { className: showFullCaption ? "overflow-y-auto" : "", style: { maxHeight: showFullCaption ? "150px" : "none" }, children: [jsx("span", { className: "font-semibold mr-2 text-gray-900 dark:text-white", children: displayUsername }), jsx("span", { className: "text-gray-800 dark:text-gray-200 whitespace-pre-wrap break-words", children: displayCaption })] }), shouldTruncate && onToggleCaption && variant !== "compact" && (jsx("button", { type: "button", onClick: function (e) {
3588
3659
  e.stopPropagation();
3589
3660
  onToggleCaption();
3590
3661
  }, className: "text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-300 font-normal mt-1 underline text-xs block", children: showFullCaption ? t.viewLess : t.viewMore }))] }), variant !== "compact" && (jsx("div", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1 text-left", children: t.timeAgo }))] })] })); };
3591
3662
  // Render Facebook Preview
3592
- var renderFacebook = function () { return (jsxs("div", { className: "flex flex-col bg-white dark:bg-gray-900 ".concat(variant === "full" ? "rounded-lg shadow-xl overflow-hidden" : "rounded-xl overflow-hidden", " ").concat(className), children: [showHeader && (jsx("div", { className: "p-4 border-b border-gray-200 dark:border-gray-800", children: jsxs("div", { className: "flex items-center gap-3", children: [jsx("div", { className: "w-10 h-10 rounded-full bg-blue-600 flex items-center justify-center", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-sm font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsxs("div", { className: "flex-1", children: [jsx("p", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: displayUsername }), jsxs("p", { className: "text-xs text-gray-500 dark:text-gray-400 flex items-center gap-1", children: [t.timeAgo, " \u00B7 ", jsx(IconComponent, { icon: "solar:earth-bold", className: "text-xs" })] })] }), jsx(IconComponent, { icon: "solar:menu-dots-bold", className: "text-xl text-gray-600 dark:text-gray-400" })] }) })), jsx("div", { className: "px-4 py-2", children: jsx("p", { className: "text-sm text-gray-900 dark:text-white whitespace-pre-wrap break-words", children: displayCaption }) }), imageUrl && (jsx("div", { className: "relative w-full bg-gray-50 dark:bg-gray-800", children: jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-auto object-cover", radius: "none" }, imageProps)) })), jsx("div", { className: "p-3 border-t border-gray-200 dark:border-gray-800", children: jsxs("div", { className: "flex items-center justify-around", children: [jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:like-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Me gusta" })] }), jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:chat-round-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Comentar" })] }), jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:share-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Compartir" })] })] }) })] })); };
3663
+ var renderFacebook = function () { return (jsxs("div", { className: "flex flex-col bg-white dark:bg-gray-900 ".concat(variant === "full" ? "rounded-lg shadow-xl overflow-hidden" : "rounded-xl overflow-hidden", " ").concat(className), children: [showHeader && (jsx("div", { className: "p-4 border-b border-gray-200 dark:border-gray-800", children: jsxs("div", { className: "flex items-center gap-3", children: [jsx("div", { className: "w-10 h-10 rounded-full bg-blue-600 flex items-center justify-center", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-sm font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsxs("div", { className: "flex-1", children: [jsx("p", { className: "text-sm font-semibold text-gray-900 dark:text-white", children: displayUsername }), jsxs("p", { className: "text-xs text-gray-500 dark:text-gray-400 flex items-center gap-1", children: [t.timeAgo, " \u00B7 ", jsx(IconComponent, { icon: "solar:earth-bold", className: "text-xs" })] })] }), jsx(IconComponent, { icon: "solar:menu-dots-bold", className: "text-xl text-gray-600 dark:text-gray-400" })] }) })), jsx("div", { className: "px-4 py-2", children: jsx("p", { className: "text-sm text-gray-900 dark:text-white whitespace-pre-wrap break-words", children: displayCaption }) }), imageUrl && (jsxs("div", { className: "relative w-full bg-gray-50 dark:bg-gray-800", children: [jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-auto object-cover", radius: "none" }, imageProps)), showEditButton && typeof onEditClick === "function" && (jsx(Button$1, { isIconOnly: true, variant: "solid", color: "default", className: "absolute top-4 right-4 z-30 bg-white/90 hover:bg-white shadow-lg", onPress: onEditClick, "aria-label": "Editar imagen", children: jsx(IconComponent, { icon: "solar:pen-2-outline", className: "text-gray-900" }) }))] })), jsx("div", { className: "p-3 border-t border-gray-200 dark:border-gray-800", children: jsxs("div", { className: "flex items-center justify-around", children: [jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:like-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Me gusta" })] }), jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:chat-round-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Comentar" })] }), jsxs("button", { type: "button", className: "flex items-center gap-2 text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 px-4 py-2 rounded-lg transition-colors", children: [jsx(IconComponent, { icon: "solar:share-bold", className: "text-xl" }), jsx("span", { className: "text-sm font-medium", children: "Compartir" })] })] }) })] })); };
3593
3664
  // Render TikTok Preview
3594
3665
  var renderTikTok = function () { return (jsxs("div", { className: "relative w-full bg-black rounded-2xl shadow-2xl overflow-hidden ".concat(className), style: { aspectRatio: "9/16", maxHeight: "640px" }, children: [imageUrl && (jsxs("div", { className: "absolute inset-0", children: [jsx(Image$1, __assign({ src: imageUrl, alt: t.imageAlt, className: "w-full h-full object-cover" }, imageProps)), jsx("div", { className: "absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-black opacity-60" })] })), jsxs("div", { className: "absolute right-2 bottom-20 flex flex-col items-center gap-6 z-20", children: [jsxs("div", { className: "flex flex-col items-center", children: [jsx("div", { className: "w-12 h-12 rounded-full border-2 border-white bg-gray-900 flex items-center justify-center", children: avatarUrl ? (jsx("img", { src: avatarUrl, alt: displayUsername, className: "w-full h-full rounded-full object-cover" })) : (jsx("span", { className: "text-white text-xs font-bold", children: displayUsername.substring(0, 2).toUpperCase() })) }), jsx("div", { className: "w-6 h-6 rounded-full bg-pink-500 flex items-center justify-center -mt-3 border-2 border-black", children: jsx(IconComponent, { icon: "solar:add-circle-bold", className: "text-xs text-white" }) })] }), jsxs("div", { className: "flex flex-col items-center gap-2", children: [jsx(IconComponent, { icon: "solar:heart-bold", className: "text-3xl text-white drop-shadow-lg" }), jsx("span", { className: "text-xs text-white font-semibold", children: "24.5K" })] }), jsxs("div", { className: "flex flex-col items-center gap-2", children: [jsx(IconComponent, { icon: "solar:chat-round-bold", className: "text-3xl text-white drop-shadow-lg" }), jsx("span", { className: "text-xs text-white font-semibold", children: "1,234" })] }), jsxs("div", { className: "flex flex-col items-center gap-2", children: [jsx(IconComponent, { icon: "solar:bookmark-bold", className: "text-3xl text-white drop-shadow-lg" }), jsx("span", { className: "text-xs text-white font-semibold", children: "453" })] }), jsxs("div", { className: "flex flex-col items-center gap-2", children: [jsx(IconComponent, { icon: "solar:share-bold", className: "text-3xl text-white drop-shadow-lg" }), jsx("span", { className: "text-xs text-white font-semibold", children: "892" })] }), jsx("div", { className: "w-10 h-10 rounded-lg bg-gray-800 border border-gray-700 flex items-center justify-center", children: jsx(IconComponent, { icon: "solar:music-note-2-bold", className: "text-xl text-white" }) })] }), jsxs("div", { className: "absolute bottom-0 left-0 right-14 z-20 p-4", children: [jsxs("p", { className: "text-sm font-semibold text-white mb-1", children: ["@", displayUsername] }), jsx("p", { className: "text-sm text-white mb-2 line-clamp-2", children: displayCaption }), jsxs("div", { className: "flex items-center gap-2 text-xs text-white", children: [jsx(IconComponent, { icon: "solar:music-note-2-bold", className: "text-sm" }), jsxs("span", { className: "truncate", children: ["Sonido original - ", displayUsername] })] })] })] })); };
3595
3666
  // Render Twitter Preview
@@ -5619,4 +5690,4 @@ var NavigationLoadingProvider = function (_a) {
5619
5690
  return (jsxs(NavigationLoadingContext.Provider, { value: value, children: [children, jsx(NavigationLoadingOverlay, { isVisible: isVisible })] }));
5620
5691
  };
5621
5692
 
5622
- export { AccordionList, AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, DEFAULT_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, TwoColumnLayoutAgent, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$4 as defaultTranslations, sizeMap, themeColors, useAuraToast, useMediaQuery, useNavigationLoading, useThemeContext };
5693
+ export { AccordionList, AddHolidayForm, AnalyticsCard, AuraAutocomplete, AuraTable, AuraToastProvider, BreadcrumbsComponent, Button, Card, Chip, ColorPicker, ColorSelector, ContentCarousel, DEFAULT_PREDEFINED_COLORS, DatePicker, DateRangePicker, DateSelector, DrawerFilters, EnumMenuNavListItem, GlobalToast, H1, H2, H3, H4, HeaderComponent, HolidayType, IconComponent, ImagePreview, Input, Kanban, KanbanCard, KanbanColumn, MenuComponent, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, MultiStepWizard, NavigationLoadingContext, NavigationLoadingOverlay, NavigationLoadingProvider, P, Pagination, Phone, PromotionalBanner, RangeFilter, RowSteps, ScheduleRow, SearchInput, Select, SocialMediaBar, SocialMediaCarousel, SocialMediaPreview, StepIndicator, Switch as SwitchComponent, TagsFilter, Textarea, ThemeContext, ThemePicker, ThemeProvider, TimeInput as TimeInputComponent, ToastContext, TwoColumnLayoutAgent, UploadFile, VerticalSteps, Wizard, WizardNavigation, WizardSidebar, defaultTranslations$4 as defaultTranslations, sizeMap, themeColors, useAuraToast, useMediaQuery, useNavigationLoading, useThemeContext };
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/components/breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAoBpE,CAAC"}
1
+ {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/components/breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuBpE,CAAC"}
@@ -39,5 +39,10 @@ export interface BreadcrumbsComponentProps extends HeroUIBreadcrumbsProps {
39
39
  * Elementos hijo (BreadcrumbItem components)
40
40
  */
41
41
  children?: React.ReactNode;
42
+ /**
43
+ * Callback for programmatic navigation when a breadcrumb item is clicked.
44
+ * When provided, replaces native anchor navigation with onPress.
45
+ */
46
+ onItemClick?: (href: string) => void;
42
47
  }
43
48
  //# sourceMappingURL=Breadcrumbs.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.types.d.ts","sourceRoot":"","sources":["../../../../src/components/breadcrumbs/Breadcrumbs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,IAAI,yBAAyB,EAChD,gBAAgB,IAAI,sBAAsB,EAC1C,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,WAAW,4BAChB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC;IACnD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACxE;;;OAGG;IACH,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
1
+ {"version":3,"file":"Breadcrumbs.types.d.ts","sourceRoot":"","sources":["../../../../src/components/breadcrumbs/Breadcrumbs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,IAAI,yBAAyB,EAChD,gBAAgB,IAAI,sBAAsB,EAC1C,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,WAAW,4BAChB,SAAQ,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC;IACnD;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACxE;;;OAGG;IACH,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/header/Header.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,eAAe,CAAC;AAMvB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsCjD,CAAC"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/header/Header.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAC;AAEtE,OAAO,eAAe,CAAC;AAUvB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA8CjD,CAAC"}
@@ -1,11 +1,22 @@
1
1
  import type { BreadcrumbItemComponentProps } from "@/components/breadcrumbs";
2
+ /**
3
+ * Traducciones disponibles para el componente Header.
4
+ * Todas las propiedades son opcionales para permitir traducciones parciales.
5
+ */
6
+ export type HeaderTranslations = {
7
+ /** Texto del botón/opción de cerrar sesión */
8
+ logout?: string;
9
+ };
2
10
  export interface HeaderProps {
3
11
  /**
4
- * The translations for the header.
12
+ * Traducciones i18n del componente.
13
+ * Si no se proporciona, usa traducciones por defecto en español.
14
+ * @example
15
+ * ```tsx
16
+ * <HeaderComponent translations={{ logout: "Sign out" }} />
17
+ * ```
5
18
  */
6
- translations?: {
7
- logout?: string;
8
- };
19
+ translations?: HeaderTranslations;
9
20
  /**
10
21
  * The number of notifications to display in the badge.
11
22
  */
@@ -24,6 +35,16 @@ export interface HeaderProps {
24
35
  onMenuClick?: () => void;
25
36
  onLogout?: () => void;
26
37
  onNotificationClick?: () => void;
38
+ /**
39
+ * Callback for programmatic navigation when a config option is selected.
40
+ * When provided, replaces native anchor navigation with onPress.
41
+ */
42
+ onOptionSelect?: (href: string) => void;
43
+ /**
44
+ * Callback for programmatic navigation when a breadcrumb is clicked.
45
+ * When provided, replaces native anchor navigation with onPress.
46
+ */
47
+ onBreadcrumbClick?: (href: string) => void;
27
48
  }
28
49
  export interface HeaderOptions {
29
50
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Header.types.d.ts","sourceRoot":"","sources":["../../../../src/components/header/Header.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"Header.types.d.ts","sourceRoot":"","sources":["../../../../src/components/header/Header.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAE7E;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/_internal/config-menu/ConfigMenu.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgDhD,CAAC"}
1
+ {"version":3,"file":"ConfigMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/_internal/config-menu/ConfigMenu.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmDhD,CAAC"}
@@ -1,9 +1,12 @@
1
- import type { HeaderOptions } from "../../Header.types";
1
+ import type { HeaderOptions, HeaderTranslations } from "../../Header.types";
2
2
  export interface ConfigMenuProps {
3
3
  options: HeaderOptions[];
4
4
  onLogout?: () => void;
5
- translations?: {
6
- logout?: string;
7
- };
5
+ /**
6
+ * Callback for programmatic navigation (e.g. React Router).
7
+ * When provided, replaces native anchor navigation with onPress.
8
+ */
9
+ onOptionSelect?: (href: string) => void;
10
+ translations?: HeaderTranslations;
8
11
  }
9
12
  //# sourceMappingURL=ConfigMenu.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigMenu.types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/_internal/config-menu/ConfigMenu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF"}
1
+ {"version":3,"file":"ConfigMenu.types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/header/_internal/config-menu/ConfigMenu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAClC"}
@@ -1,3 +1,3 @@
1
1
  export { HeaderComponent } from "./Header";
2
- export type { HeaderProps, HeaderOptions, } from "./Header.types";
2
+ export type { HeaderProps, HeaderOptions, HeaderTranslations, } from "./Header.types";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACX,WAAW,EACX,aAAa,GACb,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,GAClB,MAAM,gBAAgB,CAAC"}
@@ -3,12 +3,7 @@ import "./Menu.scss";
3
3
  import type { MenuComponentProps } from "./Menu.types";
4
4
  /**
5
5
  * Sidebar menu component for navigation and user actions.
6
- * @param commerceInfo - Object with logo and name of the company.
7
- * @param userInfo - Object with user avatar, name, and email.
8
- * @param helpButton - Help button configuration.
9
- * @param upgradeCard - Optional upgrade card configuration.
10
- * @param isOpenSidebar - Controls sidebar visibility.
11
- * @param onOpenSidebarChange - Callback to open/close sidebar.
6
+ * On mobile, shows a bottom navigation bar with items from the specified group.
12
7
  */
13
8
  export declare const MenuComponent: React.FC<MenuComponentProps>;
14
9
  //# sourceMappingURL=Menu.d.ts.map