@beweco/aurora-ui 1.0.0-beta.116 → 1.0.0-beta.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -5469,6 +5469,33 @@ const ITEM_COLLAPSED_CLASS = "w-11 h-11 gap-0 p-0 justify-center";
5469
5469
  // `wrapper` `w-full` — el título se comía el espacio libre y empujaba el `endContent` al borde.
5470
5470
  // El `[data-slot="label"]` de v3 es `w-fit`, que es la otra mitad de P-14.
5471
5471
  const ITEM_TITLE_CLASS = "w-full flex-1 text-sm font-medium text-default-500 group-data-[selected=true]:text-default-600";
5472
+ // TECH-2459 · G2 · fix de navegación — resolución de un ítem por su clave.
5473
+ //
5474
+ // `onSelectionChange` del `ListBox` entrega la CLAVE, no el ítem. v2 no necesitaba esto:
5475
+ // cada `ListboxItem` llevaba su propio `onPress={() => handleItemPress(item)}` y el ítem
5476
+ // entero viajaba en el closure. La búsqueda es recursiva para cubrir los tres niveles del
5477
+ // árbol (sección → ítem → sub-ítem). Solo los de primer nivel están en la colección del
5478
+ // `ListBox` —los sub-ítems son markup plano con su propio `onClick`, ver `renderSubItem`—,
5479
+ // pero `defaultSelectedKey` SÍ puede apuntar a un sub-ítem, y esa clave es la que hay que
5480
+ // resolver en la rama del conjunto vacío de `handleSelectionChange`.
5481
+ const findItemByKey = (items, key) => {
5482
+ for (const item of items) {
5483
+ if (item.key === key) {
5484
+ return item;
5485
+ }
5486
+ if (item.items) {
5487
+ const nested = findItemByKey(item.items, key);
5488
+ if (nested) {
5489
+ return nested;
5490
+ }
5491
+ }
5492
+ }
5493
+ return undefined;
5494
+ };
5495
+ // Un ítem de grupo NO navega nunca: su activación abre/cierra el `<details>` (expandido) o
5496
+ // el `Popover` (colapsado). Mismo criterio que v2, donde el `ListboxItem` del grupo era el
5497
+ // único sin `onPress`.
5498
+ const isNestItem = (item) => (item.items?.length ?? 0) > 0 && item.type === exports.EnumMenuNavListItem.Nest;
5472
5499
  /**
5473
5500
  * @component MenuNavList
5474
5501
  * @description A versatile navigation list component that can be displayed in an expanded or collapsed state.
@@ -5497,6 +5524,64 @@ const MenuNavList = $8WNJc$react.forwardRef(({ items, isCollapsed, defaultSelect
5497
5524
  document.activeElement.blur();
5498
5525
  }
5499
5526
  }, [onSelect]);
5527
+ // TECH-2459 · G2 · fix de navegación — QUÉ SE PERDIÓ AL MIGRAR.
5528
+ //
5529
+ // En v2 la navegación de un ítem de PRIMER NIVEL la disparaba su propio
5530
+ // `onPress={() => handleItemPress(item)}`, puesto en cada `ListboxItem` (v2 lo pasaba a
5531
+ // `usePress` sin condiciones). El `ListBoxItem` de v3 declara `PressEvents` en su tipo
5532
+ // pero NO los cablea: solo cablea `useKeyboard`/`useFocus`/`useHover`, y borra `onClick`
5533
+ // a propósito (`react-aria-components/dist/private/ListBox.mjs`, `delete
5534
+ // DOMProps.onClick`). Al traducir el componente ese `onPress` desapareció sin sustituto,
5535
+ // así que los ítems raíz se quedaron sin ninguna vía para llamar a `onSelect` y el menú
5536
+ // dejó de navegar en las 3 apps. Los sub-ítems no se enteraron porque son markup plano
5537
+ // con `onClick` (ver `renderSubItem`).
5538
+ //
5539
+ // POR QUÉ `onSelectionChange` Y NO `onAction` (leído en react-aria, no deducido):
5540
+ // `useSelectableItem` solo ejecuta la acción si `hasPrimaryAction = allowsActions &&
5541
+ // (!allowsSelection || manager.isEmpty)` (`react-aria/dist/private/selection/
5542
+ // useSelectableItem.mjs:116`). Con `selectionMode="single"` los ítems SÍ son
5543
+ // seleccionables y la selección NUNCA está vacía (`selectedKeys` es siempre un `Set` de
5544
+ // un elemento), así que `hasPrimaryAction` es permanentemente `false` y `onAction` no se
5545
+ // invoca jamás — ni el del `ListBox` ni el de cada `ListBoxItem`, porque ambos se
5546
+ // encadenan en el MISMO hueco (`react-aria/dist/private/listbox/useOption.mjs:68`).
5547
+ // `hasSecondaryAction` tampoco sirve: exige `selectionBehavior="replace"` y solo
5548
+ // dispararía con doble clic. Medido en el navegador antes del arreglo: con el `onAction`
5549
+ // que traía `renderItem`, ratón/Enter/Espacio daban 0 invocaciones de `onSelect`.
5550
+ //
5551
+ // Se pone UNO SOLO de los dos handlers a propósito: con `onAction` + `onSelectionChange`
5552
+ // activos a la vez, un clic navegaría dos veces.
5553
+ const handleSelectionChange = $8WNJc$react.useCallback((keys) => {
5554
+ // `selectionMode="single"` entrega 0 o 1 clave. El conjunto VACÍO no significa "nada
5555
+ // seleccionado": es el RECLIC sobre el ítem ya activo, que react-aria deselecciona
5556
+ // (`SelectionManager.toggleSelection` borra la clave y, sin `disallowEmptySelection`,
5557
+ // emite el `Set` vacío). Ese caso es real —el usuario pulsa dos veces su sección
5558
+ // actual— y la clave que hay que reenviar es la controlada. Por eso el `ListBox` lleva
5559
+ // `escapeKeyBehavior="none"`: es la OTRA fuente de conjunto vacío
5560
+ // (`useSelectableCollection.mjs:187`) y sin desactivarla un Escape con el menú
5561
+ // enfocado navegaría a la ruta actual — medido quitando la prop: 1 invocación
5562
+ // fantasma de `onSelect` con solo pulsar Escape.
5563
+ const changedKey = keys === "all"
5564
+ ? undefined
5565
+ : Array.from(keys)[0];
5566
+ const key = changedKey ?? selectedKey;
5567
+ if (!key) {
5568
+ return;
5569
+ }
5570
+ const item = findItemByKey(items, key);
5571
+ if (!item) {
5572
+ return;
5573
+ }
5574
+ // El grupo se descarta aquí y no en el `ListBoxItem`, porque su press llega por tres
5575
+ // vías: la cabecera del `<details>`, el disparador del `Popover` colapsado y el
5576
+ // burbujeo desde un sub-ítem del `<details>` (el `<button>` plano es descendiente DOM
5577
+ // del `ListBoxItem` padre). Sin este filtro, un clic en un sub-ítem llamaría a
5578
+ // `onSelect` dos veces —una con la clave del sub-ítem y otra con la del grupo— y
5579
+ // abrir un grupo navegaría, algo que v2 no hacía.
5580
+ if (isNestItem(item)) {
5581
+ return;
5582
+ }
5583
+ handleItemPress(item);
5584
+ }, [handleItemPress, items, selectedKey]);
5500
5585
  // Renders a sub-item (text-only, hierarchy line). Estilos de selección vía clase .selected en Menu.scss.
5501
5586
  //
5502
5587
  // ⚠️ TECH-2459 · G2 — markup PLANO (`<li><button>`), NO `ListBox.Item`. Se usa dentro de
@@ -5543,11 +5628,16 @@ const MenuNavList = $8WNJc$react.forwardRef(({ items, isCollapsed, defaultSelect
5543
5628
  return renderNestItem(item);
5544
5629
  }
5545
5630
  const isItemSelected = selectedKey === item.key;
5546
- return (jsxRuntime.jsx(react.ListBoxItem, { id: item.key, textValue: item.title, "aria-selected": isItemSelected, "aria-label": item.title || `Menu item ${item.key}`, className: react.cn(ITEM_BASE_CLASS, isCollapsed && ITEM_COLLAPSED_CLASS), onAction: () => handleItemPress(item), children: isCollapsed ? (jsxRuntime.jsxs(react.Tooltip, { delay: 0, closeDelay: 200, children: [jsxRuntime.jsx(react.Tooltip.Trigger, { children: jsxRuntime.jsx("div", { className: "flex w-full items-center justify-center", "aria-hidden": "true", children: item.icon ? (jsxRuntime.jsx(IconComponent, { className: react.cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)) }) }), jsxRuntime.jsx(react.Tooltip.Content, { placement: "right", className: "text-default-500", children: item.title })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [item.icon ? (jsxRuntime.jsx(IconComponent, { className: react.cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)), jsxRuntime.jsx(react.Label, { className: ITEM_TITLE_CLASS, children: item.title }), hideEndContent ? null : (item.endContent ?? null)] })) }, item.key));
5547
- }, [isCollapsed, hideEndContent, iconClassName, selectedKey, handleItemPress, renderNestItem]);
5631
+ return (jsxRuntime.jsx(react.ListBoxItem, { id: item.key, textValue: item.title, "aria-selected": isItemSelected, "aria-label": item.title || `Menu item ${item.key}`, className: react.cn(ITEM_BASE_CLASS, isCollapsed && ITEM_COLLAPSED_CLASS), children: isCollapsed ? (jsxRuntime.jsxs(react.Tooltip, { delay: 0, closeDelay: 200, children: [jsxRuntime.jsx(react.Tooltip.Trigger, { children: jsxRuntime.jsx("div", { className: "flex w-full items-center justify-center", "aria-hidden": "true", children: item.icon ? (jsxRuntime.jsx(IconComponent, { className: react.cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)) }) }), jsxRuntime.jsx(react.Tooltip.Content, { placement: "right", className: "text-default-500", children: item.title })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [item.icon ? (jsxRuntime.jsx(IconComponent, { className: react.cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)), jsxRuntime.jsx(react.Label, { className: ITEM_TITLE_CLASS, children: item.title }), hideEndContent ? null : (item.endContent ?? null)] })) }, item.key));
5632
+ }, [isCollapsed, hideEndContent, iconClassName, selectedKey, renderNestItem]);
5548
5633
  // `ListBox` de v3 ya no es polimórfico via `as` (a diferencia de Breadcrumbs/Pagination) —
5549
5634
  // renderiza siempre su propio contenedor; el landmark de navegación se envuelve por fuera.
5550
- return (jsxRuntime.jsx("nav", { "aria-label": "Menu navigation", ref: ref, children: jsxRuntime.jsx(react.ListBox, { "aria-label": "Menu navigation", className: react.cn("list-none items-center", className), items: items, selectedKeys: selectedKeys, selectionMode: "single", ...props, children: (item) => {
5635
+ return (jsxRuntime.jsx("nav", { "aria-label": "Menu navigation", ref: ref, children: jsxRuntime.jsx(react.ListBox, { "aria-label": "Menu navigation", className: react.cn("list-none items-center", className), items: items, selectedKeys: selectedKeys, selectionMode: "single", onSelectionChange: handleSelectionChange,
5636
+ // Neutraliza el Escape del `ListBox`: con el valor por defecto
5637
+ // (`clearSelection`) vaciaría la selección y `handleSelectionChange` leería ese
5638
+ // conjunto vacío como un reclic, navegando a la ruta actual sin que nadie haya
5639
+ // pulsado nada. Con `none`, Escape sigue sin hacer nada, igual que en v2.
5640
+ escapeKeyBehavior: "none", ...props, children: (item) => {
5551
5641
  return item.items &&
5552
5642
  item.items?.length > 0 &&
5553
5643
  item?.type === exports.EnumMenuNavListItem.Nest ? (renderNestItem(item)) : item.items && item.items?.length > 0 ? (
@@ -8416,8 +8506,14 @@ const INVALID_VARIANT_CLASS = {
8416
8506
  // Lo que v2 teñía de `danger` además del borde (variante base `isInvalid` de su `tv`).
8417
8507
  const INVALID_LABEL_CLASS$1 = "text-danger";
8418
8508
  const INVALID_TEXT_CLASS$1 = "text-danger";
8419
- /** `"all" | Set<Key> | undefined` → array de claves (`"all"` no se puede expandir sin el listado
8420
- * completo de items se trata como `undefined`, ver README para la limitación). */
8509
+ /**
8510
+ * `"all" | Set<Key> | readonly Key[] | undefined` array de claves (`"all"` no se puede expandir
8511
+ * sin el listado completo de items — se trata como `undefined`, ver README para la limitación).
8512
+ *
8513
+ * El cuerpo ya servía para un array (`Array.from` acepta `Set` e `ArrayLike` por igual): lo único
8514
+ * que había que ampliar era la FIRMA. Ver `SelectSelection` en `Select.types.ts` para el porqué
8515
+ * del tipo de entrada (y por qué NO es `Iterable<Key>`).
8516
+ */
8421
8517
  function toArray(selection) {
8422
8518
  if (selection === undefined) {
8423
8519
  return undefined;
@@ -8517,6 +8613,9 @@ fullWidth = true, isOpen, defaultOpen, onOpenChange, className, classNames, }) =
8517
8613
  if (selectionMode === "multiple") {
8518
8614
  return (jsxRuntime.jsx(react.Select, { ...commonProps, selectionMode: "multiple", value: toArray(selectedKeys), defaultValue: toArray(defaultSelectedKeys), onChange: (keys) => onSelectionChange?.(new Set(keys)), children: inner }));
8519
8615
  }
8616
+ // `Array.from` cubre las tres formas de `SelectSelection` sin ramas nuevas: `"all"` sigue
8617
+ // cayendo a `null` (v3 no admite "todo" en selección única) y un array se lee igual que un
8618
+ // `Set`. Sin castings: el tipo ya lo permite.
8520
8619
  const singleValue = selectedKeys === undefined
8521
8620
  ? undefined
8522
8621
  : selectedKeys === "all"
package/dist/index.esm.js CHANGED
@@ -5469,6 +5469,33 @@ const ITEM_COLLAPSED_CLASS = "w-11 h-11 gap-0 p-0 justify-center";
5469
5469
  // `wrapper` `w-full` — el título se comía el espacio libre y empujaba el `endContent` al borde.
5470
5470
  // El `[data-slot="label"]` de v3 es `w-fit`, que es la otra mitad de P-14.
5471
5471
  const ITEM_TITLE_CLASS = "w-full flex-1 text-sm font-medium text-default-500 group-data-[selected=true]:text-default-600";
5472
+ // TECH-2459 · G2 · fix de navegación — resolución de un ítem por su clave.
5473
+ //
5474
+ // `onSelectionChange` del `ListBox` entrega la CLAVE, no el ítem. v2 no necesitaba esto:
5475
+ // cada `ListboxItem` llevaba su propio `onPress={() => handleItemPress(item)}` y el ítem
5476
+ // entero viajaba en el closure. La búsqueda es recursiva para cubrir los tres niveles del
5477
+ // árbol (sección → ítem → sub-ítem). Solo los de primer nivel están en la colección del
5478
+ // `ListBox` —los sub-ítems son markup plano con su propio `onClick`, ver `renderSubItem`—,
5479
+ // pero `defaultSelectedKey` SÍ puede apuntar a un sub-ítem, y esa clave es la que hay que
5480
+ // resolver en la rama del conjunto vacío de `handleSelectionChange`.
5481
+ const findItemByKey = (items, key) => {
5482
+ for (const item of items) {
5483
+ if (item.key === key) {
5484
+ return item;
5485
+ }
5486
+ if (item.items) {
5487
+ const nested = findItemByKey(item.items, key);
5488
+ if (nested) {
5489
+ return nested;
5490
+ }
5491
+ }
5492
+ }
5493
+ return undefined;
5494
+ };
5495
+ // Un ítem de grupo NO navega nunca: su activación abre/cierra el `<details>` (expandido) o
5496
+ // el `Popover` (colapsado). Mismo criterio que v2, donde el `ListboxItem` del grupo era el
5497
+ // único sin `onPress`.
5498
+ const isNestItem = (item) => (item.items?.length ?? 0) > 0 && item.type === EnumMenuNavListItem.Nest;
5472
5499
  /**
5473
5500
  * @component MenuNavList
5474
5501
  * @description A versatile navigation list component that can be displayed in an expanded or collapsed state.
@@ -5497,6 +5524,64 @@ const MenuNavList = $8WNJc$react.forwardRef(({ items, isCollapsed, defaultSelect
5497
5524
  document.activeElement.blur();
5498
5525
  }
5499
5526
  }, [onSelect]);
5527
+ // TECH-2459 · G2 · fix de navegación — QUÉ SE PERDIÓ AL MIGRAR.
5528
+ //
5529
+ // En v2 la navegación de un ítem de PRIMER NIVEL la disparaba su propio
5530
+ // `onPress={() => handleItemPress(item)}`, puesto en cada `ListboxItem` (v2 lo pasaba a
5531
+ // `usePress` sin condiciones). El `ListBoxItem` de v3 declara `PressEvents` en su tipo
5532
+ // pero NO los cablea: solo cablea `useKeyboard`/`useFocus`/`useHover`, y borra `onClick`
5533
+ // a propósito (`react-aria-components/dist/private/ListBox.mjs`, `delete
5534
+ // DOMProps.onClick`). Al traducir el componente ese `onPress` desapareció sin sustituto,
5535
+ // así que los ítems raíz se quedaron sin ninguna vía para llamar a `onSelect` y el menú
5536
+ // dejó de navegar en las 3 apps. Los sub-ítems no se enteraron porque son markup plano
5537
+ // con `onClick` (ver `renderSubItem`).
5538
+ //
5539
+ // POR QUÉ `onSelectionChange` Y NO `onAction` (leído en react-aria, no deducido):
5540
+ // `useSelectableItem` solo ejecuta la acción si `hasPrimaryAction = allowsActions &&
5541
+ // (!allowsSelection || manager.isEmpty)` (`react-aria/dist/private/selection/
5542
+ // useSelectableItem.mjs:116`). Con `selectionMode="single"` los ítems SÍ son
5543
+ // seleccionables y la selección NUNCA está vacía (`selectedKeys` es siempre un `Set` de
5544
+ // un elemento), así que `hasPrimaryAction` es permanentemente `false` y `onAction` no se
5545
+ // invoca jamás — ni el del `ListBox` ni el de cada `ListBoxItem`, porque ambos se
5546
+ // encadenan en el MISMO hueco (`react-aria/dist/private/listbox/useOption.mjs:68`).
5547
+ // `hasSecondaryAction` tampoco sirve: exige `selectionBehavior="replace"` y solo
5548
+ // dispararía con doble clic. Medido en el navegador antes del arreglo: con el `onAction`
5549
+ // que traía `renderItem`, ratón/Enter/Espacio daban 0 invocaciones de `onSelect`.
5550
+ //
5551
+ // Se pone UNO SOLO de los dos handlers a propósito: con `onAction` + `onSelectionChange`
5552
+ // activos a la vez, un clic navegaría dos veces.
5553
+ const handleSelectionChange = $8WNJc$react.useCallback((keys) => {
5554
+ // `selectionMode="single"` entrega 0 o 1 clave. El conjunto VACÍO no significa "nada
5555
+ // seleccionado": es el RECLIC sobre el ítem ya activo, que react-aria deselecciona
5556
+ // (`SelectionManager.toggleSelection` borra la clave y, sin `disallowEmptySelection`,
5557
+ // emite el `Set` vacío). Ese caso es real —el usuario pulsa dos veces su sección
5558
+ // actual— y la clave que hay que reenviar es la controlada. Por eso el `ListBox` lleva
5559
+ // `escapeKeyBehavior="none"`: es la OTRA fuente de conjunto vacío
5560
+ // (`useSelectableCollection.mjs:187`) y sin desactivarla un Escape con el menú
5561
+ // enfocado navegaría a la ruta actual — medido quitando la prop: 1 invocación
5562
+ // fantasma de `onSelect` con solo pulsar Escape.
5563
+ const changedKey = keys === "all"
5564
+ ? undefined
5565
+ : Array.from(keys)[0];
5566
+ const key = changedKey ?? selectedKey;
5567
+ if (!key) {
5568
+ return;
5569
+ }
5570
+ const item = findItemByKey(items, key);
5571
+ if (!item) {
5572
+ return;
5573
+ }
5574
+ // El grupo se descarta aquí y no en el `ListBoxItem`, porque su press llega por tres
5575
+ // vías: la cabecera del `<details>`, el disparador del `Popover` colapsado y el
5576
+ // burbujeo desde un sub-ítem del `<details>` (el `<button>` plano es descendiente DOM
5577
+ // del `ListBoxItem` padre). Sin este filtro, un clic en un sub-ítem llamaría a
5578
+ // `onSelect` dos veces —una con la clave del sub-ítem y otra con la del grupo— y
5579
+ // abrir un grupo navegaría, algo que v2 no hacía.
5580
+ if (isNestItem(item)) {
5581
+ return;
5582
+ }
5583
+ handleItemPress(item);
5584
+ }, [handleItemPress, items, selectedKey]);
5500
5585
  // Renders a sub-item (text-only, hierarchy line). Estilos de selección vía clase .selected en Menu.scss.
5501
5586
  //
5502
5587
  // ⚠️ TECH-2459 · G2 — markup PLANO (`<li><button>`), NO `ListBox.Item`. Se usa dentro de
@@ -5543,11 +5628,16 @@ const MenuNavList = $8WNJc$react.forwardRef(({ items, isCollapsed, defaultSelect
5543
5628
  return renderNestItem(item);
5544
5629
  }
5545
5630
  const isItemSelected = selectedKey === item.key;
5546
- return (jsx(ListBoxItem, { id: item.key, textValue: item.title, "aria-selected": isItemSelected, "aria-label": item.title || `Menu item ${item.key}`, className: cn(ITEM_BASE_CLASS, isCollapsed && ITEM_COLLAPSED_CLASS), onAction: () => handleItemPress(item), children: isCollapsed ? (jsxs(Tooltip$2, { delay: 0, closeDelay: 200, children: [jsx(Tooltip$2.Trigger, { 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" })) : ((item.startContent ?? null)) }) }), jsx(Tooltip$2.Content, { placement: "right", className: "text-default-500", children: item.title })] })) : (jsxs(Fragment, { children: [item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)), jsx(Label, { className: ITEM_TITLE_CLASS, children: item.title }), hideEndContent ? null : (item.endContent ?? null)] })) }, item.key));
5547
- }, [isCollapsed, hideEndContent, iconClassName, selectedKey, handleItemPress, renderNestItem]);
5631
+ return (jsx(ListBoxItem, { id: item.key, textValue: item.title, "aria-selected": isItemSelected, "aria-label": item.title || `Menu item ${item.key}`, className: cn(ITEM_BASE_CLASS, isCollapsed && ITEM_COLLAPSED_CLASS), children: isCollapsed ? (jsxs(Tooltip$2, { delay: 0, closeDelay: 200, children: [jsx(Tooltip$2.Trigger, { 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" })) : ((item.startContent ?? null)) }) }), jsx(Tooltip$2.Content, { placement: "right", className: "text-default-500", children: item.title })] })) : (jsxs(Fragment, { children: [item.icon ? (jsx(IconComponent, { className: cn("text-default-500", "group-data-[selected=true]:text-default-600", iconClassName), icon: item.icon, size: "lg" })) : ((item.startContent ?? null)), jsx(Label, { className: ITEM_TITLE_CLASS, children: item.title }), hideEndContent ? null : (item.endContent ?? null)] })) }, item.key));
5632
+ }, [isCollapsed, hideEndContent, iconClassName, selectedKey, renderNestItem]);
5548
5633
  // `ListBox` de v3 ya no es polimórfico via `as` (a diferencia de Breadcrumbs/Pagination) —
5549
5634
  // renderiza siempre su propio contenedor; el landmark de navegación se envuelve por fuera.
5550
- return (jsx("nav", { "aria-label": "Menu navigation", ref: ref, children: jsx(ListBox, { "aria-label": "Menu navigation", className: cn("list-none items-center", className), items: items, selectedKeys: selectedKeys, selectionMode: "single", ...props, children: (item) => {
5635
+ return (jsx("nav", { "aria-label": "Menu navigation", ref: ref, children: jsx(ListBox, { "aria-label": "Menu navigation", className: cn("list-none items-center", className), items: items, selectedKeys: selectedKeys, selectionMode: "single", onSelectionChange: handleSelectionChange,
5636
+ // Neutraliza el Escape del `ListBox`: con el valor por defecto
5637
+ // (`clearSelection`) vaciaría la selección y `handleSelectionChange` leería ese
5638
+ // conjunto vacío como un reclic, navegando a la ruta actual sin que nadie haya
5639
+ // pulsado nada. Con `none`, Escape sigue sin hacer nada, igual que en v2.
5640
+ escapeKeyBehavior: "none", ...props, children: (item) => {
5551
5641
  return item.items &&
5552
5642
  item.items?.length > 0 &&
5553
5643
  item?.type === EnumMenuNavListItem.Nest ? (renderNestItem(item)) : item.items && item.items?.length > 0 ? (
@@ -8416,8 +8506,14 @@ const INVALID_VARIANT_CLASS = {
8416
8506
  // Lo que v2 teñía de `danger` además del borde (variante base `isInvalid` de su `tv`).
8417
8507
  const INVALID_LABEL_CLASS$1 = "text-danger";
8418
8508
  const INVALID_TEXT_CLASS$1 = "text-danger";
8419
- /** `"all" | Set<Key> | undefined` → array de claves (`"all"` no se puede expandir sin el listado
8420
- * completo de items se trata como `undefined`, ver README para la limitación). */
8509
+ /**
8510
+ * `"all" | Set<Key> | readonly Key[] | undefined` array de claves (`"all"` no se puede expandir
8511
+ * sin el listado completo de items — se trata como `undefined`, ver README para la limitación).
8512
+ *
8513
+ * El cuerpo ya servía para un array (`Array.from` acepta `Set` e `ArrayLike` por igual): lo único
8514
+ * que había que ampliar era la FIRMA. Ver `SelectSelection` en `Select.types.ts` para el porqué
8515
+ * del tipo de entrada (y por qué NO es `Iterable<Key>`).
8516
+ */
8421
8517
  function toArray(selection) {
8422
8518
  if (selection === undefined) {
8423
8519
  return undefined;
@@ -8517,6 +8613,9 @@ fullWidth = true, isOpen, defaultOpen, onOpenChange, className, classNames, }) =
8517
8613
  if (selectionMode === "multiple") {
8518
8614
  return (jsx(Select$1, { ...commonProps, selectionMode: "multiple", value: toArray(selectedKeys), defaultValue: toArray(defaultSelectedKeys), onChange: (keys) => onSelectionChange?.(new Set(keys)), children: inner }));
8519
8615
  }
8616
+ // `Array.from` cubre las tres formas de `SelectSelection` sin ramas nuevas: `"all"` sigue
8617
+ // cayendo a `null` (v3 no admite "todo" en selección única) y un array se lee igual que un
8618
+ // `Set`. Sin castings: el tipo ya lo permite.
8520
8619
  const singleValue = selectedKeys === undefined
8521
8620
  ? undefined
8522
8621
  : selectedKeys === "all"
@@ -27,7 +27,7 @@
27
27
  * publica bajo ese nombre (ver el histórico al final de `heroui-v2-shims.tsx`), así que aquí se
28
28
  * ejercita con el JSX v2 completo, como Alert y Checkbox.
29
29
  */
30
- import { type AlertProps, type CheckboxProps, type SortDescriptor, type SwitchProps, type SwitchPropsComponent, type TextAreaProps } from "../index";
30
+ import { type AlertProps, type CheckboxProps, type Selection, type SortDescriptor, type SwitchProps, type SwitchPropsComponent, type TextAreaProps } from "../index";
31
31
  /** AuraAutocomplete: API v2 (label, icon, children con AutocompleteItem). */
32
32
  declare function smokeAutocomplete(): import("react").JSX.Element;
33
33
  /** `Autocomplete` crudo (beweosagency, 1 fichero) sigue resolviendo. */
@@ -85,6 +85,44 @@ declare function smokeSwitchProps(): SwitchProps;
85
85
  declare function smokeSwitchLegacyAlias(props: SwitchPropsComponent): import("react").JSX.Element;
86
86
  /** Switch con la API compound de v3 a través de la fachada. */
87
87
  declare function smokeSwitchV3Compound(): import("react").JSX.Element;
88
+ /**
89
+ * Los patrones REALES de las apps, uno a uno (extraídos del tag, con su `file:line`):
90
+ *
91
+ * 1. **Array literal** sobre el valor de un formulario — beweossmbs
92
+ * `clients/…/general-data/attendance-card.component.tsx:128` y backoffice
93
+ * `whatsapp-templates/ui/components/TemplateForm.tsx:222` (`selectedKeys={[field.value]}`).
94
+ * 2. **Ternario que puede devolver array VACÍO** — backoffice
95
+ * `shared/ui/components/gender-select/gender-select.component.tsx:92` y beweossmbs
96
+ * `settings/location/ui/components/timezone-manager.component.tsx:52`
97
+ * (`selectedKeys={value ? [value] : []}`). Es el patrón mayoritario en backoffice: 52 de sus 78
98
+ * líneas.
99
+ * 3. **`new Set(...)`** — beweossmbs
100
+ * `clients/…/saved-views-dropdown/saved-views-dropdown.component.tsx:208` y backoffice
101
+ * `billing/sell/ui/components/SellPricingStep.tsx:76`. Lo usan 14 ficheros ya migrados: fijarlo
102
+ * aquí es lo que garantiza que ensanchar el tipo no los rompe.
103
+ * 4. **`defaultSelectedKeys` con array** — beweossmbs
104
+ * `settings/users/ui/components/invite-user-modal.component.tsx:162` (`["admin"]`) y
105
+ * beweosagency `settings/profile/ui/Profile.tsx:431` (`[formData.language]`).
106
+ * 5. **`string[]` mutable de React Hook Form en modo múltiple** — beweossmbs
107
+ * `clients/…/custom-fields-card/custom-field-controller.component.tsx:204`. No es un literal:
108
+ * su tipo es `string[]`, y por eso el tipo de la prop lleva `readonly` (acepta ambos) en vez de
109
+ * pedir una copia.
110
+ *
111
+ * La SALIDA no se ensancha: `onSelectionChange` sigue recibiendo `Selection` de v3, que es lo que
112
+ * ya esperan los handlers de las apps (`if (keys === "all")`, `Array.from(keys)`).
113
+ */
114
+ declare function smokeSelectV2SelectedKeys(value: string, multiValue: string[], onSelectionChange: (keys: Selection) => void): import("react").JSX.Element;
115
+ /**
116
+ * El límite del ensanchado, fijado a propósito: el tipo es `Selection | readonly Key[]`, **NO**
117
+ * `Iterable<Key>`. `Key` es `string | number` y un `string` plano ES un `Iterable<string>`, así que
118
+ * con `Iterable<Key>` este JSX compilaría y el `Array.from` de la fachada expandiría el valor
119
+ * **letra a letra** (`["m","x"]`), en silencio y sin error en consola. Hoy ninguna de las 4 apps
120
+ * pasa un string plano (verificado por grep), así que nadie pierde nada.
121
+ *
122
+ * Si alguien "simplifica" el tipo a `Iterable<Key>`, este `@ts-expect-error` se queda sin error que
123
+ * esperar y `tsc` falla con «Unused '@ts-expect-error' directive» — que es el punto.
124
+ */
125
+ declare function smokeSelectRejectsBareString(): import("react").JSX.Element;
88
126
  /** Selection/SortDescriptor: mismas formas que en v2 (pass-through verificado, no shim real). */
89
127
  declare function smokeCollectionTypes(): {
90
128
  selection: "all";
@@ -136,6 +174,8 @@ export declare const v2ApiSurfaceSmokeTest: {
136
174
  smokeSwitchProps: typeof smokeSwitchProps;
137
175
  smokeSwitchLegacyAlias: typeof smokeSwitchLegacyAlias;
138
176
  smokeSwitchV3Compound: typeof smokeSwitchV3Compound;
177
+ smokeSelectV2SelectedKeys: typeof smokeSelectV2SelectedKeys;
178
+ smokeSelectRejectsBareString: typeof smokeSelectRejectsBareString;
139
179
  smokeCollectionTypes: typeof smokeCollectionTypes;
140
180
  smokeAlertProps: typeof smokeAlertProps;
141
181
  smokeAlertColorUnion: typeof smokeAlertColorUnion;
@@ -1 +1 @@
1
- {"version":3,"file":"v2-api-surface.d.ts","sourceRoot":"","sources":["../../../src/__smoke__/v2-api-surface.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAIN,KAAK,UAAU,EAUf,KAAK,aAAa,EAqBlB,KAAK,cAAc,EAGnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EASzB,KAAK,aAAa,EAIlB,MAAM,UAAU,CAAC;AAMlB,6EAA6E;AAC7E,iBAAS,iBAAiB,gCAWzB;AAED,wEAAwE;AACxE,iBAAS,oBAAoB,gCAQ5B;AAED,gEAAgE;AAChE,iBAAS,cAAc,gCAEtB;AAED,kFAAkF;AAClF,iBAAS,YAAY,gCAEpB;AAED,+DAA+D;AAC/D,iBAAS,UAAU,gCAElB;AAMD,oGAAoG;AACpG,iBAAS,gBAAgB,gCASxB;AAED,6CAA6C;AAC7C,iBAAS,UAAU,gCAalB;AAED,2DAA2D;AAC3D,iBAAS,SAAS,gCAMjB;AAED,gFAAgF;AAChF,iBAAS,iBAAiB,gCAQzB;AAED,yBAAyB;AACzB,iBAAS,WAAW,gCAUnB;AAED,mEAAmE;AACnE,iBAAS,aAAa,gCAcrB;AAED,+BAA+B;AAC/B,iBAAS,cAAc,gCAMtB;AAED,mGAAmG;AACnG,iBAAS,UAAU,gCAOlB;AAED,gCAAgC;AAChC,iBAAS,gBAAgB,gCAMxB;AAMD,uFAAuF;AACvF,iBAAS,mBAAmB,gCAM3B;AAMD,iBAAS,aAAa,gCAErB;AASD;;;;;;;;;GASG;AACH,iBAAS,uBAAuB,CAC/B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,EAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,+BAgBjB;AAED;;;GAGG;AACH,iBAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,+BAoBxE;AAED,8DAA8D;AAC9D,iBAAS,gBAAgB,IAAI,WAAW,CAEvC;AAED;;;;GAIG;AACH,iBAAS,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,+BAE1D;AAED,+DAA+D;AAC/D,iBAAS,qBAAqB,gCAW7B;AAMD,iGAAiG;AACjG,iBAAS,oBAAoB;;;EAO5B;AAED,qGAAqG;AACrG,iBAAS,eAAe,IAAI,UAAU,CAWrC;AAED,iGAAiG;AACjG,iBAAS,oBAAoB,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAElE;AAOD,0GAA0G;AAC1G,iBAAS,YAAY,gCA+BpB;AAED,wFAAwF;AACxF,iBAAS,oBAAoB,gCAW5B;AAED,yGAAyG;AACzG,iBAAS,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,+BAyBtE;AAED,iEAAiE;AACjE,iBAAS,uBAAuB,gCAS/B;AAED,gEAAgE;AAChE,iBAAS,kBAAkB,IAAI,aAAa,CAE3C;AAED,iGAAiG;AACjG,iBAAS,kBAAkB,IAAI,aAAa,CAU3C;AAMD,iBAAS,kBAAkB;;iBAMP,IAAI;kBACH,IAAI;sBACA,OAAO,KAAK,IAAI;mBACnB,IAAI;EAEzB;AAKD,iBAAS,OAAO,yCAEf;AAKD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCjC,CAAC"}
1
+ {"version":3,"file":"v2-api-surface.d.ts","sourceRoot":"","sources":["../../../src/__smoke__/v2-api-surface.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAIN,KAAK,UAAU,EAUf,KAAK,aAAa,EAqBlB,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EASzB,KAAK,aAAa,EAIlB,MAAM,UAAU,CAAC;AAMlB,6EAA6E;AAC7E,iBAAS,iBAAiB,gCAWzB;AAED,wEAAwE;AACxE,iBAAS,oBAAoB,gCAQ5B;AAED,gEAAgE;AAChE,iBAAS,cAAc,gCAEtB;AAED,kFAAkF;AAClF,iBAAS,YAAY,gCAEpB;AAED,+DAA+D;AAC/D,iBAAS,UAAU,gCAElB;AAMD,oGAAoG;AACpG,iBAAS,gBAAgB,gCASxB;AAED,6CAA6C;AAC7C,iBAAS,UAAU,gCAalB;AAED,2DAA2D;AAC3D,iBAAS,SAAS,gCAMjB;AAED,gFAAgF;AAChF,iBAAS,iBAAiB,gCAQzB;AAED,yBAAyB;AACzB,iBAAS,WAAW,gCAUnB;AAED,mEAAmE;AACnE,iBAAS,aAAa,gCAcrB;AAED,+BAA+B;AAC/B,iBAAS,cAAc,gCAMtB;AAED,mGAAmG;AACnG,iBAAS,UAAU,gCAOlB;AAED,gCAAgC;AAChC,iBAAS,gBAAgB,gCAMxB;AAMD,uFAAuF;AACvF,iBAAS,mBAAmB,gCAM3B;AAMD,iBAAS,aAAa,gCAErB;AASD;;;;;;;;;GASG;AACH,iBAAS,uBAAuB,CAC/B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,EAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,+BAgBjB;AAED;;;GAGG;AACH,iBAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,+BAoBxE;AAED,8DAA8D;AAC9D,iBAAS,gBAAgB,IAAI,WAAW,CAEvC;AAED;;;;GAIG;AACH,iBAAS,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,+BAE1D;AAED,+DAA+D;AAC/D,iBAAS,qBAAqB,gCAW7B;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,yBAAyB,CACjC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,+BAsC5C;AAED;;;;;;;;;GASG;AACH,iBAAS,4BAA4B,gCAUpC;AAMD,iGAAiG;AACjG,iBAAS,oBAAoB;;;EAO5B;AAED,qGAAqG;AACrG,iBAAS,eAAe,IAAI,UAAU,CAWrC;AAED,iGAAiG;AACjG,iBAAS,oBAAoB,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAElE;AAOD,0GAA0G;AAC1G,iBAAS,YAAY,gCA+BpB;AAED,wFAAwF;AACxF,iBAAS,oBAAoB,gCAW5B;AAED,yGAAyG;AACzG,iBAAS,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,+BAyBtE;AAED,iEAAiE;AACjE,iBAAS,uBAAuB,gCAS/B;AAED,gEAAgE;AAChE,iBAAS,kBAAkB,IAAI,aAAa,CAE3C;AAED,iGAAiG;AACjG,iBAAS,kBAAkB,IAAI,aAAa,CAU3C;AAMD,iBAAS,kBAAkB;;iBAMP,IAAI;kBACH,IAAI;sBACA,OAAO,KAAK,IAAI;mBACnB,IAAI;EAEzB;AAKD,iBAAS,OAAO,yCAEf;AAKD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuNavList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/_internal/menu-nav-list/MenuNavList.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAmC5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,sFAucvB,CAAC"}
1
+ {"version":3,"file":"MenuNavList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/_internal/menu-nav-list/MenuNavList.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAoE5D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,sFAohBvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,gBAAgB,CAAC;AAmS5E;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAoLxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACX,WAAW,EAIX,MAAM,gBAAgB,CAAC;AAySxB;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuLxC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -9,6 +9,28 @@ export interface SelectClassNames {
9
9
  trigger?: string;
10
10
  popoverContent?: string;
11
11
  }
12
+ /**
13
+ * Entrada de selección de la fachada: el vocabulario v2 (`Selection` = `"all" | Set<Key>`) **más
14
+ * arrays**, que es la forma en la que realmente escriben las apps (medido 08-sep-2026 por grep de
15
+ * `selectedKeys=`/`defaultSelectedKeys=` en los `.tsx` de los 4 repos: 116 usos en beweossmbs, 78
16
+ * en backoffice-beweos, 25 en beweosagency, 0 en loginos; la mayoría arrays, literales o por
17
+ * ternario).
18
+ *
19
+ * Por qué existe: en v2 el `Select` de HeroUI heredaba `MultipleSelection` de React Aria, cuyo
20
+ * `selectedKeys` es **`"all" | Iterable<Key>`** (`@react-types/shared/src/selection.d.ts:35`), no
21
+ * `Selection` — o sea, en v2 un array compilaba. Esta fachada lo declaró como `Selection` al
22
+ * migrar y estrechó la API sin cambiar el nombre de la prop, así que el fallo se cuela en
23
+ * cualquier auditoría de nombres: 71 errores de tipos en 30 ficheros solo en backoffice.
24
+ *
25
+ * ⚠️ Es `Selection | readonly Key[]`, **NO `Iterable<Key>`**, y no es simplificable: `Key` es
26
+ * `string | number`, y un `string` plano ES un `Iterable<string>`. Con `Iterable<Key>` un
27
+ * `selectedKeys="abc"` compilaría y el `Array.from` de la fachada lo expandiría **letra a letra**
28
+ * (`["a","b","c"]`), en silencio y sin error en consola. Con `readonly Key[]` ese JSX no compila,
29
+ * y los usos reales quedan cubiertos igual porque todos son arrays (verificado: ninguna de las 4
30
+ * apps pasa hoy un string plano). El `readonly` está para aceptar tanto `string[]` mutable —el
31
+ * caso de `f.value` de React Hook Form— como una tupla congelada, sin obligar a nadie a copiar.
32
+ */
33
+ export type SelectSelection = Selection | readonly Key[];
12
34
  export interface SelectProps {
13
35
  children?: ReactNode;
14
36
  label?: ReactNode;
@@ -25,10 +47,14 @@ export interface SelectProps {
25
47
  radius?: SelectRadius;
26
48
  /** @default "single" */
27
49
  selectionMode?: "single" | "multiple";
28
- /** Claves seleccionadas (controlado). Vocabulario v2: `"all"` o un `Set`/array de claves. */
29
- selectedKeys?: Selection;
30
- /** Claves seleccionadas por defecto (no controlado). */
31
- defaultSelectedKeys?: Selection;
50
+ /**
51
+ * Claves seleccionadas (controlado). Vocabulario v2: `"all"`, un `Set` o un **array** de claves
52
+ * (ver `SelectSelection` para por qué es `readonly Key[]` y no `Iterable<Key>`).
53
+ */
54
+ selectedKeys?: SelectSelection;
55
+ /** Claves seleccionadas por defecto (no controlado). Mismas formas que `selectedKeys`. */
56
+ defaultSelectedKeys?: SelectSelection;
57
+ /** La SALIDA no cambia: v3 manda, y sigue siendo `Selection` (`"all" | Set<Key>`). */
32
58
  onSelectionChange?: (keys: Selection) => void;
33
59
  disabledKeys?: Iterable<Key>;
34
60
  isInvalid?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Select.types.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AASD,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
1
+ {"version":3,"file":"Select.types.d.ts","sourceRoot":"","sources":["../../../../src/components/select/Select.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AASzD,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,eAAe,CAAC;IACtC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
@@ -1,3 +1,3 @@
1
1
  export { Select, default } from "./Select";
2
- export type { SelectProps } from "./Select.types";
2
+ export type { SelectProps, SelectSelection } from "./Select.types";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG3C,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "1.0.0-beta.116",
3
+ "version": "1.0.0-beta.118",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",