@wow-two-beta/ui 0.0.49 → 0.0.51

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 (58) hide show
  1. package/dist/actions/button/Button.d.ts +3 -2
  2. package/dist/actions/button/Button.d.ts.map +1 -1
  3. package/dist/actions/index.js +2 -2
  4. package/dist/actions/toggleButton/ToggleButton.d.ts +3 -1
  5. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
  6. package/dist/{chunk-C6XVQ5TW.js → chunk-2KZJXQJ5.js} +7 -5
  7. package/dist/chunk-2KZJXQJ5.js.map +1 -0
  8. package/dist/{chunk-34TLJSEH.js → chunk-BIJGZBQQ.js} +73 -3
  9. package/dist/chunk-BIJGZBQQ.js.map +1 -0
  10. package/dist/{chunk-NTUKGLIQ.js → chunk-CDDBGAXP.js} +3 -3
  11. package/dist/{chunk-NTUKGLIQ.js.map → chunk-CDDBGAXP.js.map} +1 -1
  12. package/dist/{chunk-UPSN6NFK.js → chunk-D3N27NNO.js} +4 -4
  13. package/dist/{chunk-UPSN6NFK.js.map → chunk-D3N27NNO.js.map} +1 -1
  14. package/dist/{chunk-5V7FBKKL.js → chunk-HDQCFWFH.js} +3 -3
  15. package/dist/{chunk-5V7FBKKL.js.map → chunk-HDQCFWFH.js.map} +1 -1
  16. package/dist/{chunk-JYP2HIG3.js → chunk-JPYWGMD4.js} +4 -4
  17. package/dist/{chunk-JYP2HIG3.js.map → chunk-JPYWGMD4.js.map} +1 -1
  18. package/dist/{chunk-EUA2TRKE.js → chunk-RFELPPTS.js} +32 -23
  19. package/dist/chunk-RFELPPTS.js.map +1 -0
  20. package/dist/{chunk-WPC3KBRU.js → chunk-SVJVVZO6.js} +3 -3
  21. package/dist/{chunk-WPC3KBRU.js.map → chunk-SVJVVZO6.js.map} +1 -1
  22. package/dist/{chunk-NUI2NTIA.js → chunk-V4T56XX7.js} +175 -130
  23. package/dist/chunk-V4T56XX7.js.map +1 -0
  24. package/dist/{chunk-EL2ALIBA.js → chunk-YYGII4AA.js} +11 -7
  25. package/dist/chunk-YYGII4AA.js.map +1 -0
  26. package/dist/{chunk-ZJJ4KW6G.js → chunk-ZDUT2XVH.js} +4 -4
  27. package/dist/{chunk-ZJJ4KW6G.js.map → chunk-ZDUT2XVH.js.map} +1 -1
  28. package/dist/display/index.js +3 -3
  29. package/dist/feedback/index.js +3 -3
  30. package/dist/forms/checkbox/Checkbox.d.ts +3 -2
  31. package/dist/forms/checkbox/Checkbox.d.ts.map +1 -1
  32. package/dist/forms/combobox/Combobox.d.ts.map +1 -1
  33. package/dist/forms/index.js +5 -5
  34. package/dist/forms/select/Select.d.ts +52 -28
  35. package/dist/forms/select/Select.d.ts.map +1 -1
  36. package/dist/forms/select/index.d.ts +1 -1
  37. package/dist/forms/select/index.d.ts.map +1 -1
  38. package/dist/icons/index.js +1 -1
  39. package/dist/index.js +11 -11
  40. package/dist/layout/index.js +3 -3
  41. package/dist/nav/index.js +3 -3
  42. package/dist/nav/navigationMenu/NavigationMenu.d.ts.map +1 -1
  43. package/dist/overlays/hoverCard/HoverCard.d.ts.map +1 -1
  44. package/dist/overlays/index.js +2 -2
  45. package/dist/overlays/popover/Popover.d.ts.map +1 -1
  46. package/dist/utils/ColorExtensions.d.ts +39 -0
  47. package/dist/utils/ColorExtensions.d.ts.map +1 -0
  48. package/dist/utils/Equality.d.ts +29 -0
  49. package/dist/utils/Equality.d.ts.map +1 -0
  50. package/dist/utils/index.d.ts +3 -0
  51. package/dist/utils/index.d.ts.map +1 -1
  52. package/dist/utils/index.js +1 -1
  53. package/package.json +1 -1
  54. package/dist/chunk-34TLJSEH.js.map +0 -1
  55. package/dist/chunk-C6XVQ5TW.js.map +0 -1
  56. package/dist/chunk-EL2ALIBA.js.map +0 -1
  57. package/dist/chunk-EUA2TRKE.js.map +0 -1
  58. package/dist/chunk-NUI2NTIA.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { listboxItemVariants, listboxVariants, listboxGroupLabelVariants, listboxSeparatorVariants, listboxEmptyVariants } from './chunk-WPC3KBRU.js';
2
- import { PopoverTrigger, Popover, PopoverContent } from './chunk-C6XVQ5TW.js';
3
- import { startOfMonth, isSameDay, isToday, isDateDisabled, parseISODate, formatISODate, parseISOTime, Tag, addMonths, Kbd, addDays, buildMonthGrid, MONTHS_LONG, WEEKDAYS_SHORT, formatISOTime, startOfDay, isInRange } from './chunk-5V7FBKKL.js';
1
+ import { listboxItemVariants, listboxVariants, listboxGroupLabelVariants, listboxSeparatorVariants, listboxEmptyVariants } from './chunk-SVJVVZO6.js';
2
+ import { PopoverTrigger, Popover, PopoverContent } from './chunk-2KZJXQJ5.js';
3
+ import { startOfMonth, isSameDay, isToday, isDateDisabled, parseISODate, formatISODate, parseISOTime, Tag, addMonths, Kbd, addDays, buildMonthGrid, MONTHS_LONG, WEEKDAYS_SHORT, formatISOTime, startOfDay, isInRange } from './chunk-HDQCFWFH.js';
4
4
  import { useControlled } from './chunk-NUMFGKPY.js';
5
5
  import { Icon } from './chunk-F227LKWK.js';
6
- import { tv, CssExtensions, dataAttr, surfaceVariants } from './chunk-34TLJSEH.js';
6
+ import { tv, CssExtensions, ColorExtensions, dataAttr, surfaceVariants, Equality } from './chunk-BIJGZBQQ.js';
7
7
  import { useFormControl, FormControlProvider, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner, DismissableLayer } from './chunk-BMABNEZX.js';
8
8
  import { useId } from './chunk-KDXJQNB6.js';
9
9
  import { cn, composeRefs } from './chunk-LDRFQG44.js';
@@ -577,6 +577,7 @@ var Checkbox = forwardRef(
577
577
  indeterminate,
578
578
  variant = "solid",
579
579
  tone = "primary",
580
+ color,
580
581
  id,
581
582
  disabled,
582
583
  required,
@@ -592,11 +593,13 @@ var Checkbox = forwardRef(
592
593
  const boxClass = sizePreset ? BOX_SIZE_CLASS[sizePreset] : void 0;
593
594
  const iconClass = sizePreset ? ICON_SIZE_CLASS[sizePreset] : DEFAULT_ICON_CLASS;
594
595
  const boxStyle = sizeBox ? CssExtensions.resolveBoxSize(sizeBox) : void 0;
596
+ const colorStyle = ColorExtensions.toneColorOverride(color, tone);
597
+ const composedStyle = colorStyle || boxStyle ? { ...colorStyle, ...boxStyle } : void 0;
595
598
  return /* @__PURE__ */ jsxs(
596
599
  "span",
597
600
  {
598
601
  className: cn("relative inline-flex shrink-0", boxClass, className),
599
- style: boxStyle,
602
+ style: composedStyle,
600
603
  children: [
601
604
  /* @__PURE__ */ jsx(
602
605
  "input",
@@ -1582,7 +1585,6 @@ var selectTriggerVariants = tv({
1582
1585
  state: "default"
1583
1586
  }
1584
1587
  });
1585
- var defaultEquals2 = (a, b) => Object.is(a, b);
1586
1588
  var SelectContext = createContext(null);
1587
1589
  function useSelectContext() {
1588
1590
  const ctx = useContext(SelectContext);
@@ -1590,15 +1592,15 @@ function useSelectContext() {
1590
1592
  return ctx;
1591
1593
  }
1592
1594
  function SelectImpl({
1593
- value,
1594
- defaultValue,
1595
- onValueChange,
1596
- isEqual,
1595
+ selected,
1596
+ defaultSelected,
1597
+ onChange,
1598
+ keyEquals,
1597
1599
  disabled = false,
1598
1600
  isLoading = false,
1599
1601
  clearable = false,
1600
1602
  name,
1601
- serialize,
1603
+ serializeKey,
1602
1604
  invalid,
1603
1605
  defaultOpen = false,
1604
1606
  open: openProp,
@@ -1611,70 +1613,88 @@ function SelectImpl({
1611
1613
  default: defaultOpen,
1612
1614
  onChange: onOpenChange
1613
1615
  });
1614
- const [valueState, setValueState] = useControlled({
1615
- controlled: value,
1616
- default: defaultValue ?? null,
1617
- onChange: onValueChange
1616
+ const [keyState, setKeyState] = useControlled({
1617
+ controlled: selected,
1618
+ default: defaultSelected ?? null,
1619
+ onChange: void 0
1620
+ // we emit via onChange below — needs both key + value
1618
1621
  });
1619
1622
  const [items, setItems] = useState([]);
1620
1623
  const [query, setQuery] = useState("");
1621
- const isEqualRef = useRef(isEqual);
1622
- isEqualRef.current = isEqual;
1623
- const serializeRef = useRef(serialize);
1624
- serializeRef.current = serialize;
1625
- const equals = useCallback((a, b) => {
1626
- const fn = isEqualRef.current;
1627
- return (fn ?? defaultEquals2)(a, b);
1624
+ const keyEqualsRef = useRef(keyEquals);
1625
+ keyEqualsRef.current = keyEquals;
1626
+ const serializeKeyRef = useRef(serializeKey);
1627
+ serializeKeyRef.current = serializeKey;
1628
+ const onChangeRef = useRef(onChange);
1629
+ onChangeRef.current = onChange;
1630
+ const keyEqualsFn = useCallback((a, b) => {
1631
+ const fn = keyEqualsRef.current;
1632
+ return (fn ?? Equality.strict)(a, b);
1628
1633
  }, []);
1629
- const serializer = useCallback((v) => {
1630
- const fn = serializeRef.current;
1631
- return (fn ?? ((x) => String(x)))(v);
1634
+ const serializeKeyFn = useCallback((k) => {
1635
+ const fn = serializeKeyRef.current;
1636
+ return (fn ?? ((x) => String(x)))(k);
1632
1637
  }, []);
1633
- const registerItem = useCallback((entry) => {
1634
- setItems((prev) => {
1635
- const idx = prev.findIndex((p) => Object.is(p.value, entry.value));
1636
- if (idx >= 0) {
1637
- const existing = prev[idx];
1638
- if (existing && existing.label === entry.label && existing.text === entry.text) {
1639
- return prev;
1638
+ const registerItem = useCallback(
1639
+ (entry) => {
1640
+ setItems((prev) => {
1641
+ const idx = prev.findIndex((p) => Object.is(p.itemKey, entry.itemKey));
1642
+ if (idx >= 0) {
1643
+ const existing = prev[idx];
1644
+ if (existing && existing.label === entry.label && existing.text === entry.text && Object.is(existing.value, entry.value)) {
1645
+ return prev;
1646
+ }
1647
+ const next = prev.slice();
1648
+ next[idx] = entry;
1649
+ return next;
1640
1650
  }
1641
- const next = prev.slice();
1642
- next[idx] = entry;
1643
- return next;
1644
- }
1645
- return [...prev, entry];
1646
- });
1647
- }, []);
1648
- const unregisterItem = useCallback((v) => {
1651
+ return [...prev, entry];
1652
+ });
1653
+ },
1654
+ []
1655
+ );
1656
+ const unregisterItem = useCallback((k) => {
1649
1657
  setItems((prev) => {
1650
- const idx = prev.findIndex((p) => Object.is(p.value, v));
1658
+ const idx = prev.findIndex((p) => Object.is(p.itemKey, k));
1651
1659
  if (idx === -1) return prev;
1652
1660
  const next = prev.slice();
1653
1661
  next.splice(idx, 1);
1654
1662
  return next;
1655
1663
  });
1656
1664
  }, []);
1657
- const onSelect = useCallback(
1665
+ const emitChange = useCallback(
1658
1666
  (next) => {
1659
- setValueState(next);
1667
+ onChangeRef.current?.(next);
1668
+ },
1669
+ []
1670
+ );
1671
+ const onSelect = useCallback(
1672
+ (entry) => {
1673
+ setKeyState(entry.itemKey);
1660
1674
  setOpenState(false);
1661
1675
  setQuery("");
1676
+ emitChange({
1677
+ itemKey: entry.itemKey,
1678
+ value: entry.value,
1679
+ label: entry.label
1680
+ });
1662
1681
  },
1663
- [setValueState, setOpenState]
1682
+ [setKeyState, setOpenState, emitChange]
1664
1683
  );
1665
1684
  const onClear = useCallback(() => {
1666
- setValueState(null);
1667
- }, [setValueState]);
1668
- const hasValue = valueState !== null && valueState !== void 0;
1685
+ setKeyState(null);
1686
+ emitChange(null);
1687
+ }, [setKeyState, emitChange]);
1688
+ const hasSelection = keyState !== null && keyState !== void 0;
1669
1689
  const ctx = useMemo(
1670
1690
  () => ({
1671
1691
  open: openState,
1672
1692
  setOpen: setOpenState,
1673
- value: valueState,
1674
- hasValue,
1693
+ selectedKey: keyState,
1694
+ hasSelection,
1675
1695
  onSelect,
1676
1696
  onClear,
1677
- isEqual: equals,
1697
+ keyEquals: keyEqualsFn,
1678
1698
  items,
1679
1699
  registerItem,
1680
1700
  unregisterItem,
@@ -1683,18 +1703,18 @@ function SelectImpl({
1683
1703
  disabled,
1684
1704
  isLoading,
1685
1705
  clearable,
1686
- serialize: serializer,
1706
+ serializeKey: serializeKeyFn,
1687
1707
  name,
1688
1708
  invalid
1689
1709
  }),
1690
1710
  [
1691
1711
  openState,
1692
1712
  setOpenState,
1693
- valueState,
1694
- hasValue,
1713
+ keyState,
1714
+ hasSelection,
1695
1715
  onSelect,
1696
1716
  onClear,
1697
- equals,
1717
+ keyEqualsFn,
1698
1718
  items,
1699
1719
  registerItem,
1700
1720
  unregisterItem,
@@ -1702,7 +1722,7 @@ function SelectImpl({
1702
1722
  disabled,
1703
1723
  isLoading,
1704
1724
  clearable,
1705
- serializer,
1725
+ serializeKeyFn,
1706
1726
  name,
1707
1727
  invalid
1708
1728
  ]
@@ -1716,7 +1736,7 @@ function SelectImpl({
1716
1736
  if (!o) setQuery("");
1717
1737
  },
1718
1738
  placement,
1719
- offset: 6,
1739
+ offset: 4,
1720
1740
  children
1721
1741
  }
1722
1742
  ) });
@@ -1729,18 +1749,26 @@ var TRIGGER_ICON_CLASSES = {
1729
1749
  lg: "h-5 w-5"
1730
1750
  };
1731
1751
  var TRIGGER_CLEAR_BOX_CLASSES = {
1732
- xs: "h-3.5 w-3.5",
1733
- sm: "h-4 w-4",
1734
- md: "h-4 w-4",
1735
- lg: "h-5 w-5"
1752
+ xs: "h-4 w-4",
1753
+ sm: "h-5 w-5",
1754
+ md: "h-5 w-5",
1755
+ lg: "h-6 w-6"
1756
+ };
1757
+ var TRIGGER_DIVIDER_CLASSES = {
1758
+ xs: "h-3",
1759
+ sm: "h-3.5",
1760
+ md: "h-4",
1761
+ lg: "h-5"
1736
1762
  };
1737
1763
  var SelectTrigger = forwardRef(
1738
1764
  function SelectTrigger2({ size, state, className, children, ...rest }, ref) {
1739
1765
  const ctx = useSelectContext();
1740
1766
  const triggerState = state ?? (ctx.invalid ? "invalid" : "default");
1741
- const showClear = ctx.clearable && ctx.hasValue && !ctx.isLoading && !ctx.disabled;
1742
- const iconClass = TRIGGER_ICON_CLASSES[size ?? "md"];
1743
- const clearBoxClass = TRIGGER_CLEAR_BOX_CLASSES[size ?? "md"];
1767
+ const showClear = ctx.clearable && ctx.hasSelection && !ctx.isLoading && !ctx.disabled;
1768
+ const sizeKey = size ?? "md";
1769
+ const iconClass = TRIGGER_ICON_CLASSES[sizeKey];
1770
+ const clearBoxClass = TRIGGER_CLEAR_BOX_CLASSES[sizeKey];
1771
+ const dividerClass = TRIGGER_DIVIDER_CLASSES[sizeKey];
1744
1772
  return /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
1745
1773
  "button",
1746
1774
  {
@@ -1752,32 +1780,35 @@ var SelectTrigger = forwardRef(
1752
1780
  ...rest,
1753
1781
  children: [
1754
1782
  children ?? /* @__PURE__ */ jsx(SelectValue, {}),
1755
- /* @__PURE__ */ jsxs("span", { className: "ml-auto flex items-center gap-1", children: [
1756
- showClear && /* @__PURE__ */ jsx(
1757
- "span",
1758
- {
1759
- role: "button",
1760
- tabIndex: 0,
1761
- "aria-label": "Clear selection",
1762
- onClick: (e) => {
1763
- e.stopPropagation();
1764
- ctx.onClear();
1765
- },
1766
- onPointerDown: (e) => e.stopPropagation(),
1767
- onKeyDown: (e) => {
1768
- if (e.key === "Enter" || e.key === " ") {
1769
- e.preventDefault();
1783
+ /* @__PURE__ */ jsxs("span", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [
1784
+ showClear && /* @__PURE__ */ jsxs(Fragment, { children: [
1785
+ /* @__PURE__ */ jsx(
1786
+ "span",
1787
+ {
1788
+ role: "button",
1789
+ tabIndex: 0,
1790
+ "aria-label": "Clear selection",
1791
+ onClick: (e) => {
1770
1792
  e.stopPropagation();
1771
1793
  ctx.onClear();
1772
- }
1773
- },
1774
- className: cn(
1775
- "grid place-items-center rounded-sm text-subtle-foreground hover:bg-muted hover:text-foreground",
1776
- clearBoxClass
1777
- ),
1778
- children: /* @__PURE__ */ jsx(X, { className: iconClass })
1779
- }
1780
- ),
1794
+ },
1795
+ onPointerDown: (e) => e.stopPropagation(),
1796
+ onKeyDown: (e) => {
1797
+ if (e.key === "Enter" || e.key === " ") {
1798
+ e.preventDefault();
1799
+ e.stopPropagation();
1800
+ ctx.onClear();
1801
+ }
1802
+ },
1803
+ className: cn(
1804
+ "grid place-items-center rounded-full text-subtle-foreground transition-colors hover:bg-muted hover:text-foreground",
1805
+ clearBoxClass
1806
+ ),
1807
+ children: /* @__PURE__ */ jsx(X, { className: iconClass })
1808
+ }
1809
+ ),
1810
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("w-px bg-border", dividerClass) })
1811
+ ] }),
1781
1812
  ctx.isLoading ? /* @__PURE__ */ jsx(Loader2, { className: cn(iconClass, "animate-spin text-subtle-foreground") }) : /* @__PURE__ */ jsx(
1782
1813
  ChevronDown,
1783
1814
  {
@@ -1797,8 +1828,8 @@ var SelectTrigger = forwardRef(
1797
1828
  function SelectValue({ placeholder, children }) {
1798
1829
  const ctx = useSelectContext();
1799
1830
  if (children) return /* @__PURE__ */ jsx("span", { className: "truncate", children });
1800
- const match = ctx.hasValue ? ctx.items.find((i) => ctx.isEqual(i.value, ctx.value)) : void 0;
1801
- const label = match?.label ?? (ctx.hasValue ? ctx.serialize(ctx.value) : null);
1831
+ const match = ctx.hasSelection ? ctx.items.find((i) => ctx.keyEquals(i.itemKey, ctx.selectedKey)) : void 0;
1832
+ const label = match?.label ?? (ctx.hasSelection ? ctx.serializeKey(ctx.selectedKey) : null);
1802
1833
  return /* @__PURE__ */ jsx("span", { className: cn("truncate text-left", !label && "text-subtle-foreground"), children: label ?? placeholder });
1803
1834
  }
1804
1835
  function SelectContent({
@@ -1806,6 +1837,7 @@ function SelectContent({
1806
1837
  searchable = false,
1807
1838
  searchPlaceholder = "Search\u2026",
1808
1839
  noResultsLabel = "No results",
1840
+ matchWidth = false,
1809
1841
  variant,
1810
1842
  tone,
1811
1843
  radius,
@@ -1826,7 +1858,8 @@ function SelectContent({
1826
1858
  padding: padding ?? "none",
1827
1859
  elevation,
1828
1860
  className: cn(
1829
- "w-auto min-w-[var(--anchor-width)] overflow-hidden",
1861
+ "overflow-hidden",
1862
+ matchWidth ? "w-[var(--anchor-width)] [&_[role=option]>span.flex-1>:first-child]:truncate" : "w-auto min-w-[var(--anchor-width)]",
1830
1863
  className
1831
1864
  ),
1832
1865
  children: [
@@ -1846,11 +1879,13 @@ function SelectContent({
1846
1879
  /* @__PURE__ */ jsxs(
1847
1880
  Listbox,
1848
1881
  {
1849
- value: ctx.value ?? void 0,
1850
- onValueChange: (v) => {
1851
- if (v !== null && v !== void 0) ctx.onSelect(v);
1882
+ value: ctx.selectedKey ?? void 0,
1883
+ onValueChange: (k) => {
1884
+ if (k === null || k === void 0) return;
1885
+ const entry = ctx.items.find((i) => ctx.keyEquals(i.itemKey, k));
1886
+ if (entry) ctx.onSelect(entry);
1852
1887
  },
1853
- isEqual: ctx.isEqual,
1888
+ isEqual: ctx.keyEquals,
1854
1889
  variant: "flat",
1855
1890
  radius: "none",
1856
1891
  children: [
@@ -1859,7 +1894,7 @@ function SelectContent({
1859
1894
  ]
1860
1895
  }
1861
1896
  ),
1862
- ctx.name && ctx.hasValue && /* @__PURE__ */ jsx("input", { type: "hidden", name: ctx.name, value: ctx.serialize(ctx.value) })
1897
+ ctx.name && ctx.hasSelection && /* @__PURE__ */ jsx("input", { type: "hidden", name: ctx.name, value: ctx.serializeKey(ctx.selectedKey) })
1863
1898
  ]
1864
1899
  }
1865
1900
  );
@@ -1868,26 +1903,27 @@ function extractText(node) {
1868
1903
  if (node == null || typeof node === "boolean") return "";
1869
1904
  if (typeof node === "string" || typeof node === "number") return String(node);
1870
1905
  if (Array.isArray(node)) return node.map(extractText).join(" ");
1871
- if (isValidElement(node)) {
1906
+ if (typeof node === "object" && "props" in node) {
1872
1907
  const props = node.props;
1873
- return extractText(props.children);
1908
+ return extractText(props?.children);
1874
1909
  }
1875
1910
  return "";
1876
1911
  }
1877
- var SelectItem = forwardRef(function SelectItem2({ value, disabled, text, className, children }, ref) {
1912
+ var SelectItem = forwardRef(function SelectItem2({ itemKey, value, label, children, text, disabled, className }, ref) {
1878
1913
  const ctx = useSelectContext();
1879
1914
  const { registerItem, unregisterItem, query } = ctx;
1915
+ const resolvedValue = value === void 0 ? itemKey : value;
1880
1916
  const itemText = useMemo(
1881
- () => text ?? extractText(children),
1882
- [text, children]
1917
+ () => text ?? extractText(label) ?? extractText(children),
1918
+ [text, label, children]
1883
1919
  );
1884
1920
  useEffect(() => {
1885
- registerItem({ value, label: children, text: itemText });
1886
- return () => unregisterItem(value);
1887
- }, [registerItem, unregisterItem, value, children, itemText]);
1921
+ registerItem({ itemKey, value: resolvedValue, label, text: itemText });
1922
+ return () => unregisterItem(itemKey);
1923
+ }, [registerItem, unregisterItem, itemKey, resolvedValue, label, itemText]);
1888
1924
  const matchesQuery = !query || itemText.toLowerCase().includes(query.toLowerCase());
1889
1925
  if (!matchesQuery) return null;
1890
- return /* @__PURE__ */ jsx(ListboxItem, { ref, value, disabled, className, children });
1926
+ return /* @__PURE__ */ jsx(ListboxItem, { ref, value: itemKey, disabled, className, children: children ?? label });
1891
1927
  });
1892
1928
  Select.Trigger = SelectTrigger;
1893
1929
  Select.Value = SelectValue;
@@ -2308,36 +2344,45 @@ function ComboboxContent({
2308
2344
  const ctx = useComboboxContext();
2309
2345
  if (!ctx.open) return null;
2310
2346
  const resolvedPadding = padding ?? "xs";
2311
- return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(AnchoredPositioner, { anchor: ctx.inputRef.current, placement, offset, children: /* @__PURE__ */ jsx(
2312
- DismissableLayer,
2347
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(
2348
+ AnchoredPositioner,
2313
2349
  {
2314
- onEscape: () => ctx.setOpen(false),
2315
- onOutsidePointerDown: (e) => {
2316
- if (ctx.inputRef.current?.contains(e.target)) return;
2317
- ctx.setOpen(false);
2318
- },
2350
+ anchor: ctx.inputRef.current,
2351
+ placement,
2352
+ offset,
2353
+ className: "z-dropdown",
2319
2354
  children: /* @__PURE__ */ jsx(
2320
- "div",
2355
+ DismissableLayer,
2321
2356
  {
2322
- id: ctx.listboxId,
2323
- role: "listbox",
2324
- className: cn(
2325
- surfaceVariants({
2326
- variant,
2327
- tone,
2328
- radius,
2329
- padding: resolvedPadding,
2330
- elevation
2331
- }),
2332
- listboxVariants(),
2333
- className
2334
- ),
2335
- style: ctx.inputRef.current ? { minWidth: ctx.inputRef.current.offsetWidth } : void 0,
2336
- children
2357
+ onEscape: () => ctx.setOpen(false),
2358
+ onOutsidePointerDown: (e) => {
2359
+ if (ctx.inputRef.current?.contains(e.target)) return;
2360
+ ctx.setOpen(false);
2361
+ },
2362
+ children: /* @__PURE__ */ jsx(
2363
+ "div",
2364
+ {
2365
+ id: ctx.listboxId,
2366
+ role: "listbox",
2367
+ className: cn(
2368
+ surfaceVariants({
2369
+ variant,
2370
+ tone,
2371
+ radius,
2372
+ padding: resolvedPadding,
2373
+ elevation
2374
+ }),
2375
+ listboxVariants(),
2376
+ className
2377
+ ),
2378
+ style: ctx.inputRef.current ? { minWidth: ctx.inputRef.current.offsetWidth } : void 0,
2379
+ children
2380
+ }
2381
+ )
2337
2382
  }
2338
2383
  )
2339
2384
  }
2340
- ) }) });
2385
+ ) });
2341
2386
  }
2342
2387
  var ComboboxItem = forwardRef(function ComboboxItem2({ value, disabled = false, className, children, onClick, onPointerEnter, ...rest }, forwardedRef) {
2343
2388
  const ctx = useComboboxContext();
@@ -7419,5 +7464,5 @@ var ChatComposer = forwardRef(
7419
7464
  ChatComposer.displayName = "ChatComposer";
7420
7465
 
7421
7466
  export { ADDRESS_COUNTRIES, AddressForm, BUILT_IN_EMOJI, BUILT_IN_FONTS, Calendar, CharacterCount, ChatComposer, Checkbox, CheckboxField, CheckboxGroup, ChoiceCard, CodeEditor, ColorArea, ColorField, ColorPicker, ColorSlider, ColorSwatch, ColorSwatchPicker, ColorWheel, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxSeparator, CronInput, CurrencyInput, DateField, DatePicker, DateRangePicker, Editable, EditableCancel, EditableInput, EditablePreview, EditableSubmit, EmailInput, EmojiPicker, Fieldset, FilePicker, FileUpload, FontPicker, FormErrorMessage, FormField, FormHelperText, GradientPicker, IconPicker, InputAddon, InputGroup, JSONEditor, KeyboardShortcutPicker, Knob, Label, LabeledInput, Legend, Listbox, ListboxEmpty, ListboxGroup, ListboxItem, ListboxSeparator, MarkdownEditor, MaskedInput, MultiSelect, MultiSelectContent, MultiSelectItem, MultiSelectTags, MultiSelectTrigger, NumberInput, PHONE_COUNTRIES, PasswordInput, PasswordStrength, PercentInput, PhoneInput, PinInput, Radio, RadioField, RadioGroup, RangeCalendar, ReactionPicker, RecurrenceEditor, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Slider, Stepper, StepperList, StepperPanel, StepperStep, Switch, SwitchField, TagsInput, TelInput, TextInput, Textarea, TimeField, TimePicker, UrlInput, Wizard, WizardFooter, WizardStep, WizardSteps, colorSwatchVariants, gradientToCss, useWizard };
7422
- //# sourceMappingURL=chunk-NUI2NTIA.js.map
7423
- //# sourceMappingURL=chunk-NUI2NTIA.js.map
7467
+ //# sourceMappingURL=chunk-V4T56XX7.js.map
7468
+ //# sourceMappingURL=chunk-V4T56XX7.js.map