@sproutsocial/seeds-react-menu 0.1.0 → 0.2.1

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 (62) hide show
  1. package/.eslintignore +6 -0
  2. package/.eslintrc.js +6 -2
  3. package/.turbo/turbo-build.log +10 -10
  4. package/CHANGELOG.md +23 -1
  5. package/dist/esm/index.js +243 -217
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/index.d.mts +104 -38
  8. package/dist/index.d.ts +104 -38
  9. package/dist/index.js +272 -243
  10. package/dist/index.js.map +1 -1
  11. package/package.json +10 -7
  12. package/src/ActionMenu/ActionMenu.feature +9 -3
  13. package/src/ActionMenu/ActionMenu.tsx +76 -42
  14. package/src/ActionMenu/__tests__/ActionMenu.test.tsx +36 -42
  15. package/src/ActionMenu/__tests__/ActionMenu.typetest.tsx +13 -13
  16. package/src/MenuContent/MenuContent.tsx +31 -1
  17. package/src/MenuContent/MenuContentTypes.ts +3 -4
  18. package/src/MenuContent/styles.tsx +10 -6
  19. package/src/MenuContext.tsx +1 -6
  20. package/src/MenuFooter/MenuFooter.feature +1 -1
  21. package/src/MenuFooter/MenuFooter.tsx +8 -0
  22. package/src/MenuFooter/__tests__/MenuFooter.test.tsx +53 -26
  23. package/src/MenuFooter/styles.tsx +1 -1
  24. package/src/MenuGroup/MenuGroup.feature +14 -26
  25. package/src/MenuGroup/MenuGroup.tsx +21 -1
  26. package/src/MenuGroup/MenuGroupTypes.ts +1 -0
  27. package/src/MenuGroup/__tests__/MenuGroup.test.tsx +41 -6
  28. package/src/MenuGroup/styles.tsx +4 -3
  29. package/src/MenuHeader/MenuHeader.tsx +16 -5
  30. package/src/MenuHeader/__tests__/MenuHeader.test.tsx +50 -6
  31. package/src/MenuHeader/__tests__/MenuHeader.typetest.tsx +1 -0
  32. package/src/MenuHeader/styles.tsx +21 -22
  33. package/src/MenuItem/MenuItem.feature +66 -26
  34. package/src/MenuItem/MenuItem.tsx +39 -20
  35. package/src/MenuItem/MenuItemTypes.ts +13 -1
  36. package/src/MenuItem/__tests__/MenuItem.test.tsx +431 -154
  37. package/src/MenuItem/__tests__/MenuItem.typetest.tsx +57 -38
  38. package/src/MenuItem/styles.tsx +44 -3
  39. package/src/{MenuItemSelectable/MenuItemSelectable.tsx → MenuItem/useOptionProps.tsx} +32 -54
  40. package/src/MenuRoot/MenuRoot.feature +20 -10
  41. package/src/MenuRoot/MenuRoot.tsx +14 -18
  42. package/src/MenuRoot/__tests__/MenuRoot.test.tsx +168 -34
  43. package/src/MenuRoot/__tests__/MenuRoot.typetest.tsx +10 -10
  44. package/src/MultiSelectMenu/MultiSelectMenu.feature +2 -13
  45. package/src/MultiSelectMenu/MultiSelectMenu.tsx +9 -1
  46. package/src/MultiSelectMenu/__tests__/MultiSelectMenu.test.tsx +154 -153
  47. package/src/MultiSelectMenu/__tests__/MultiSelectMenu.typetest.tsx +10 -10
  48. package/src/SingleSelectMenu/SingleSelectMenu.feature +11 -0
  49. package/src/SingleSelectMenu/SingleSelectMenu.tsx +10 -0
  50. package/src/SingleSelectMenu/__tests__/SingleSelectMenu.test.tsx +11 -14
  51. package/src/SingleSelectMenu/__tests__/SingleSelectMenu.typetest.tsx +14 -14
  52. package/src/__tests__/Menu.test.tsx +20 -16
  53. package/src/hooks/useItemsFromChildren.tsx +2 -4
  54. package/src/index.ts +0 -1
  55. package/src/menuTestingUtils.tsx +7 -4
  56. package/tsconfig.json +1 -1
  57. package/src/MenuItemSelectable/MenuItemSelectable.feature +0 -99
  58. package/src/MenuItemSelectable/MenuItemSelectableTypes.ts +0 -15
  59. package/src/MenuItemSelectable/__tests__/MenuItemSelectable.test.tsx +0 -303
  60. package/src/MenuItemSelectable/__tests__/MenuItemSelectable.typetest.tsx +0 -56
  61. package/src/MenuItemSelectable/index.ts +0 -5
  62. package/src/MenuItemSelectable/styles.tsx +0 -21
package/dist/index.js CHANGED
@@ -111,20 +111,19 @@ __export(src_exports, {
111
111
  MenuGroup: () => MenuGroup,
112
112
  MenuHeader: () => MenuHeader,
113
113
  MenuItem: () => MenuItem,
114
+ MenuItemAction: () => MenuItemAction,
114
115
  MenuItemContainer: () => MenuItemContainer,
115
- MenuItemSelectable: () => MenuItemSelectable,
116
- MenuItemSelectableAction: () => MenuItemSelectableAction,
117
- MenuItemSelectableRow: () => MenuItemSelectableRow,
118
- MenuItemSelectableText: () => MenuItemSelectableText,
116
+ MenuItemRow: () => MenuItemRow,
117
+ MenuItemText: () => MenuItemText,
119
118
  MenuLabel: () => MenuLabel,
120
119
  MenuProvider: () => MenuProvider,
121
120
  MenuRoot: () => MenuRoot,
122
121
  MenuToggleButton: () => MenuToggleButton,
123
122
  MultiSelectMenu: () => MultiSelectMenu,
124
- SelectionIndicator: () => SelectionIndicator,
125
123
  SingleSelectMenu: () => SingleSelectMenu,
126
124
  StyledMenuGroup: () => StyledMenuGroup,
127
125
  StyledMenuGroupUl: () => StyledMenuGroupUl,
126
+ StyledMenuItem: () => StyledMenuItem,
128
127
  StyledTitle: () => StyledTitle,
129
128
  defaultUseSelectProps: () => defaultUseSelectProps,
130
129
  useItemsFromChildren: () => useItemsFromChildren,
@@ -135,7 +134,7 @@ __export(src_exports, {
135
134
  module.exports = __toCommonJS(src_exports);
136
135
 
137
136
  // src/MenuItem/MenuItem.tsx
138
- var import_react2 = require("react");
137
+ var import_react3 = require("react");
139
138
 
140
139
  // src/MenuContext.tsx
141
140
  var import_react = require("react");
@@ -184,15 +183,6 @@ var useMenuContext = () => {
184
183
  return menuContextValue;
185
184
  };
186
185
 
187
- // src/constants.ts
188
- var MENU_ITEM_ROLES = {
189
- MENUITEM: "menuitem",
190
- LISTITEM: "listitem",
191
- OPTION: "option",
192
- RADIO: "menuitemradio",
193
- CHECKBOX: "menuitemcheckbox"
194
- };
195
-
196
186
  // src/MenuItem/styles.tsx
197
187
  var import_styled_components2 = __toESM(require("styled-components"));
198
188
 
@@ -1739,19 +1729,39 @@ var highlightedStyles = import_styled_components2.css`
1739
1729
  cursor: pointer;
1740
1730
  border: 1px solid ${({ theme: theme2 }) => theme2.colors.listItem.border.base};
1741
1731
  background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.hover};
1732
+ color: ${({ theme: theme2 }) => theme2.colors.text.body};
1733
+ text-decoration: none;
1742
1734
  `;
1743
1735
  var MenuItemContainer = import_styled_components2.default.li`
1736
+ box-sizing: border-box;
1737
+ list-style-type: none;
1738
+ margin-left: ${({ theme: theme2 }) => theme2.space[300]};
1739
+ margin-right: ${({ theme: theme2 }) => theme2.space[300]};
1740
+ transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
1741
+
1742
+ &:first-child {
1743
+ margin-top: ${({ theme: theme2 }) => theme2.space[300]};
1744
+ }
1745
+
1746
+ &:last-child {
1747
+ margin-bottom: ${({ theme: theme2 }) => theme2.space[300]};
1748
+ }
1749
+ `;
1750
+ var StyledMenuItem = import_styled_components2.default.div`
1751
+ display: block;
1752
+ box-sizing: border-box;
1753
+ width: 100%;
1744
1754
  border-radius: ${({ theme: theme2 }) => theme2.radii[500]};
1745
1755
  background-color: ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
1746
1756
  border: 1px solid ${({ theme: theme2 }) => theme2.colors.listItem.background.base};
1747
1757
  color: ${({ theme: theme2 }) => theme2.colors.text.body};
1748
1758
  font-family: ${({ theme: theme2 }) => theme2.fontFamily};
1749
1759
  font-weight: ${({ theme: theme2 }) => theme2.fontWeights.normal};
1760
+ text-align: left;
1761
+ text-decoration: none;
1750
1762
  padding: ${({ theme: theme2 }) => theme2.space[300]};
1751
- list-style-type: none;
1752
1763
  outline: 0;
1753
1764
  ${({ theme: theme2 }) => theme2.typography[200]};
1754
- transition: all ${({ theme: theme2 }) => theme2.duration["fast"]};
1755
1765
 
1756
1766
  /* Highlighted */
1757
1767
  ${({ $highlighted }) => $highlighted && highlightedStyles}
@@ -1793,170 +1803,166 @@ var MenuItemContainer = import_styled_components2.default.li`
1793
1803
  ${layout}
1794
1804
  ${space}
1795
1805
  `;
1796
-
1797
- // src/MenuItem/MenuItem.tsx
1798
- var import_jsx_runtime2 = require("react/jsx-runtime");
1799
- var MenuItem = ({
1800
- id,
1801
- children,
1802
- role = "menuitem",
1803
- label,
1804
- onClick,
1805
- onKeyDown,
1806
- disabled: disabled2 = false,
1807
- ref,
1808
- color: color2,
1809
- ...props
1810
- }) => {
1811
- const { getItemProps, itemsMap, highlightedIndex, isListbox } = (0, import_react2.useContext)(MenuContext);
1812
- const item = itemsMap[id] || { index: 0, id };
1813
- const highlighted = highlightedIndex === item?.index;
1814
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1815
- MenuItemContainer,
1816
- {
1817
- id,
1818
- tabIndex: role !== MENU_ITEM_ROLES.LISTITEM && !disabled2 ? -1 : void 0,
1819
- $highlighted: highlighted,
1820
- ...getItemProps?.({
1821
- ...isListbox ? {} : { role: "menuitem" },
1822
- item,
1823
- index: item.index,
1824
- // This prop no longer supported in downshift
1825
- // disabled,
1826
- onClick,
1827
- onKeyDown
1828
- }),
1829
- ...props,
1830
- children
1831
- }
1832
- );
1833
- };
1834
-
1835
- // src/MenuItemSelectable/MenuItemSelectable.tsx
1836
- var import_react3 = require("react");
1837
- var import_seeds_react_icon = require("@sproutsocial/seeds-react-icon");
1838
- var import_seeds_react_checkbox2 = require("@sproutsocial/seeds-react-checkbox");
1839
- var import_seeds_react_switch = require("@sproutsocial/seeds-react-switch");
1840
- var import_seeds_react_radio = require("@sproutsocial/seeds-react-radio");
1841
- var import_styled_components4 = require("styled-components");
1842
- var import_seeds_react_box = require("@sproutsocial/seeds-react-box");
1843
-
1844
- // src/MenuItemSelectable/styles.tsx
1845
- var import_styled_components3 = __toESM(require("styled-components"));
1846
- var MenuItemSelectableRow = import_styled_components3.default.div`
1806
+ var MenuItemRow = import_styled_components2.default.div`
1847
1807
  display: flex;
1848
1808
  align-items: center;
1849
1809
  pointer-events: none;
1850
1810
  `;
1851
- var MenuItemSelectableAction = import_styled_components3.default.div`
1811
+ var MenuItemAction = import_styled_components2.default.div`
1852
1812
  margin-right: ${({ theme: theme2 }) => theme2.space[300]};
1853
1813
  display: flex;
1854
1814
  align-items: center;
1855
1815
  justify-content: center;
1856
1816
  flex-shrink: 0;
1857
1817
  `;
1858
- var MenuItemSelectableText = import_styled_components3.default.div`
1818
+ var MenuItemText = import_styled_components2.default.div`
1859
1819
  word-break: break-word;
1860
1820
  flex-grow: 1;
1861
1821
  min-width: 0;
1862
1822
  `;
1863
1823
 
1864
- // src/MenuItemSelectable/MenuItemSelectable.tsx
1865
- var import_jsx_runtime3 = require("react/jsx-runtime");
1824
+ // src/MenuItem/useOptionProps.tsx
1825
+ var import_react2 = require("react");
1826
+ var import_seeds_react_icon = require("@sproutsocial/seeds-react-icon");
1827
+ var import_seeds_react_checkbox2 = require("@sproutsocial/seeds-react-checkbox");
1828
+ var import_seeds_react_switch = require("@sproutsocial/seeds-react-switch");
1829
+ var import_seeds_react_radio = require("@sproutsocial/seeds-react-radio");
1830
+ var import_styled_components3 = require("styled-components");
1831
+ var import_seeds_react_box = require("@sproutsocial/seeds-react-box");
1832
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1866
1833
  var SelectionIndicator = ({
1867
1834
  id,
1868
1835
  inputType = "icon",
1869
1836
  "aria-labelledby": labeledBy,
1870
1837
  selected
1871
1838
  }) => {
1872
- const { space: space2 } = (0, import_styled_components4.useTheme)();
1839
+ const { space: space2 } = (0, import_styled_components3.useTheme)();
1873
1840
  const inputStub = (e) => {
1874
1841
  e.stopPropagation();
1875
1842
  };
1876
1843
  switch (inputType) {
1877
1844
  case "checkbox":
1878
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1845
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1879
1846
  import_seeds_react_checkbox2.Checkbox,
1880
1847
  {
1881
1848
  onChange: () => {
1882
1849
  },
1883
1850
  checked: selected,
1884
1851
  "aria-labelledby": labeledBy,
1885
- id: `MenuItemSelectable-${inputType}-${id}`
1852
+ id: `MenuItem-${inputType}-${id}`
1886
1853
  }
1887
1854
  );
1888
1855
  case "switch":
1889
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1856
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1890
1857
  import_seeds_react_switch.Switch,
1891
1858
  {
1892
1859
  onClick: inputStub,
1893
1860
  checked: !!selected,
1894
1861
  "aria-labelledby": labeledBy,
1895
- id: `MenuItemSelectable-${inputType}-${id}`
1862
+ id: `MenuItem-${inputType}-${id}`
1896
1863
  }
1897
1864
  );
1898
1865
  case "radio":
1899
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1866
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1900
1867
  import_seeds_react_radio.Radio,
1901
1868
  {
1902
1869
  checked: selected,
1903
- id: `MenuItemSelectable-${inputType}-${id}`,
1904
- name: `MenuItemSelectable-${inputType}`,
1870
+ id: `MenuItem-${inputType}-${id}`,
1871
+ name: `MenuItem-${inputType}`,
1905
1872
  "aria-labelledby": labeledBy
1906
1873
  }
1907
1874
  );
1908
1875
  case "icon":
1909
1876
  if (selected) {
1910
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_seeds_react_icon.Icon, { name: "check-solid", "aria-hidden": true, size: "small" });
1877
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_icon.Icon, { name: "check-solid", "aria-hidden": true, size: "small" });
1911
1878
  } else {
1912
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_seeds_react_box.Box, { width: space2["400"] });
1879
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_seeds_react_box.Box, { width: space2["400"] });
1913
1880
  }
1914
1881
  default:
1915
1882
  return null;
1916
1883
  }
1917
1884
  };
1918
- var MenuItemSelectable = ({
1885
+ var useOptionProps = ({
1919
1886
  id,
1920
1887
  children,
1921
1888
  inputType = "icon",
1922
- inputLabel,
1889
+ inputLabelId,
1923
1890
  ...props
1924
1891
  }) => {
1925
- const { selectedItem, selectedItems, isListbox } = (0, import_react3.useContext)(MenuContext);
1926
- const selected = (0, import_react3.useMemo)(
1892
+ const { selectedItem, selectedItems, isListbox } = (0, import_react2.useContext)(MenuContext);
1893
+ const selected = (0, import_react2.useMemo)(
1927
1894
  () => selectedItem?.id === id || !!selectedItems?.find((item) => item?.id === id),
1895
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1928
1896
  [selectedItem, selectedItems]
1929
1897
  );
1930
- if (isListbox === false) {
1931
- console.warn(
1932
- "MenuItemSelectable is invalid when isListbox is false (Menu)"
1933
- );
1934
- }
1935
- const label = inputLabel || `menu-item-child-${id}`;
1936
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1937
- MenuItem,
1898
+ const label = inputLabelId || `menu-item-child-${id}`;
1899
+ return isListbox ? {
1900
+ active: selected,
1901
+ ["aria-selected"]: selected,
1902
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(MenuItemRow, { children: [
1903
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemAction, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1904
+ SelectionIndicator,
1905
+ {
1906
+ id,
1907
+ "aria-labelledby": label,
1908
+ inputType,
1909
+ selected: !!selected
1910
+ }
1911
+ ) }),
1912
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MenuItemText, { id: label, children })
1913
+ ] }),
1914
+ ...props
1915
+ } : {};
1916
+ };
1917
+
1918
+ // src/MenuItem/MenuItem.tsx
1919
+ var import_jsx_runtime3 = require("react/jsx-runtime");
1920
+ var MenuItem = ({
1921
+ id,
1922
+ children,
1923
+ onClick,
1924
+ onKeyDown,
1925
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1926
+ disabled: disabled2 = false,
1927
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1928
+ ref,
1929
+ href,
1930
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1931
+ color: color2,
1932
+ ...props
1933
+ }) => {
1934
+ const { getItemProps, itemsMap, highlightedIndex, isListbox } = (0, import_react3.useContext)(MenuContext);
1935
+ const { ...optionProps } = useOptionProps({
1936
+ id,
1937
+ children,
1938
+ ...props
1939
+ });
1940
+ const item = itemsMap[id] || { index: 0, id };
1941
+ const highlighted = highlightedIndex === item?.index;
1942
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MenuItemContainer, { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1943
+ StyledMenuItem,
1938
1944
  {
1939
- active: selected,
1940
1945
  id,
1941
- "aria-selected": selected,
1942
- ...props,
1943
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(MenuItemSelectableRow, { children: [
1944
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MenuItemSelectableAction, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1945
- SelectionIndicator,
1946
- {
1947
- id,
1948
- "aria-labelledby": label,
1949
- inputType,
1950
- selected: !!selected
1951
- }
1952
- ) }),
1953
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MenuItemSelectableText, { id: label, children })
1954
- ] })
1946
+ $highlighted: highlighted,
1947
+ ...getItemProps?.({
1948
+ ...isListbox ? {} : { role: "menuitem" },
1949
+ item,
1950
+ index: item.index,
1951
+ // This prop no longer supported in downshift
1952
+ // disabled,
1953
+ onClick,
1954
+ onKeyDown
1955
+ }),
1956
+ as: isListbox ? void 0 : href ? "a" : "button",
1957
+ href,
1958
+ children,
1959
+ ...optionProps,
1960
+ ...props
1955
1961
  }
1956
- );
1962
+ ) });
1957
1963
  };
1958
1964
 
1959
- // src/MenuItemSelectable/MenuItemSelectableTypes.ts
1965
+ // src/MenuItem/MenuItemTypes.ts
1960
1966
  var INPUT_TYPES = {
1961
1967
  CHECKBOX: "checkbox",
1962
1968
  RADIO: "radio",
@@ -1968,8 +1974,8 @@ var INPUT_TYPES = {
1968
1974
  var import_react4 = require("react");
1969
1975
 
1970
1976
  // src/MenuHeader/styles.tsx
1971
- var import_styled_components5 = __toESM(require("styled-components"));
1972
- var MenuHeaderContainer = import_styled_components5.default.div`
1977
+ var import_styled_components4 = __toESM(require("styled-components"));
1978
+ var MenuHeaderContainer = import_styled_components4.default.div`
1973
1979
  border-color: ${({ theme: theme2 }) => theme2.colors.container.border.base};
1974
1980
  border-bottom-width: 1px;
1975
1981
  border-bottom-style: solid;
@@ -1977,26 +1983,9 @@ var MenuHeaderContainer = import_styled_components5.default.div`
1977
1983
  width: 100%;
1978
1984
  font-size: ${({ theme: theme2 }) => theme2.typography[200].fontSize};
1979
1985
  display: flex;
1986
+ flex-direction: column;
1980
1987
  padding: ${({ theme: theme2 }) => theme2.space[350]} ${({ theme: theme2 }) => theme2.space[400]};
1981
1988
 
1982
- > a {
1983
- white-space: nowrap;
1984
- }
1985
-
1986
- &:first-child {
1987
- flex-grow: 1;
1988
- justify-self: start;
1989
- }
1990
-
1991
- &:last-child {
1992
- flex-grow: 1;
1993
- justify-self: end;
1994
- }
1995
-
1996
- ${({ $leftAction, theme: theme2 }) => $leftAction && `
1997
- padding-left: ${theme2.space[350]};
1998
- `}
1999
-
2000
1989
  ${border}
2001
1990
  ${color}
2002
1991
  ${flexbox}
@@ -2005,23 +1994,40 @@ var MenuHeaderContainer = import_styled_components5.default.div`
2005
1994
  ${space}
2006
1995
  ${position}
2007
1996
  `;
2008
- var MenuTitleText = import_styled_components5.default.h3`
1997
+ var MenuTitleText = import_styled_components4.default.h3`
2009
1998
  color: ${({ theme: theme2 }) => theme2.colors.text.headline};
2010
1999
  font-weight: ${({ theme: theme2 }) => theme2.fontWeights.bold};
2011
2000
  margin: 0px;
2012
2001
  flex-grow: 2;
2013
2002
  justify-self: start;
2014
2003
 
2004
+ ${({ theme: theme2 }) => theme2.typography[200]}
2005
+
2015
2006
  ${({ $leftAction, theme: theme2 }) => $leftAction && `
2016
2007
  padding-left: ${theme2.space[350]};
2017
2008
  `}
2018
-
2019
- ${({ theme: theme2 }) => theme2.typography[200]}
2020
2009
  `;
2021
- var MenuChildrenContainer = import_styled_components5.default.div`
2010
+ var MenuChildrenContainer = import_styled_components4.default.div`
2022
2011
  grid-column: 1 / -1;
2023
2012
  margin-top: ${({ theme: theme2 }) => theme2.space[300]};
2024
2013
  `;
2014
+ var MenuHeaderFeatures = import_styled_components4.default.div`
2015
+ display: flex;
2016
+
2017
+ > a {
2018
+ white-space: nowrap;
2019
+ }
2020
+
2021
+ &:first-child {
2022
+ flex-grow: 1;
2023
+ justify-self: start;
2024
+ }
2025
+
2026
+ &:last-child {
2027
+ flex-grow: 1;
2028
+ justify-self: end;
2029
+ }
2030
+ `;
2025
2031
 
2026
2032
  // src/MenuHeader/MenuHeader.tsx
2027
2033
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -2033,21 +2039,21 @@ var MenuHeader = ({
2033
2039
  ...rest
2034
2040
  }) => {
2035
2041
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(MenuHeaderContainer, { $leftAction: !!leftAction, ...rest, children: [
2036
- leftAction && leftAction,
2037
- title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuTitleText, { $leftAction: !!leftAction, children: title }),
2038
- rightAction && rightAction,
2042
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(MenuHeaderFeatures, { $leftAction: !!leftAction, children: [
2043
+ leftAction && leftAction,
2044
+ title && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuTitleText, { $leftAction: !!leftAction, children: title }),
2045
+ rightAction && rightAction
2046
+ ] }),
2039
2047
  children && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuChildrenContainer, { children })
2040
2048
  ] }) });
2041
2049
  };
2042
2050
 
2043
2051
  // src/MenuContent/styles.tsx
2044
- var import_styled_components6 = __toESM(require("styled-components"));
2045
- var StyledMenuContent = import_styled_components6.default.ul`
2052
+ var import_styled_components5 = __toESM(require("styled-components"));
2053
+ var import_react5 = require("motion/react");
2054
+ var StyledMenuContent = (0, import_styled_components5.default)(import_react5.motion.ul)`
2046
2055
  margin: 0;
2047
- padding: ${({ theme: theme2 }) => theme2.space[300]} 0;
2048
- &:focus {
2049
- ${focusRing}
2050
- }
2056
+ padding: 0;
2051
2057
  `;
2052
2058
 
2053
2059
  // src/MenuContent/MenuContent.tsx
@@ -2057,7 +2063,7 @@ var MenuContent = ({
2057
2063
  children,
2058
2064
  ...rest
2059
2065
  }) => {
2060
- const { getToggleButtonProps } = useMenuContext();
2066
+ const { getToggleButtonProps, getMenuProps, isListbox } = useMenuContext();
2061
2067
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2062
2068
  StyledMenuContent,
2063
2069
  {
@@ -2066,6 +2072,13 @@ var MenuContent = ({
2066
2072
  tabIndex: 0,
2067
2073
  onKeyDown: getToggleButtonProps?.().onKeyDown,
2068
2074
  "aria-activedescendant": getToggleButtonProps?.()["aria-activedescendant"],
2075
+ ...getMenuProps?.(
2076
+ {
2077
+ ...isListbox ? {} : { role: "menu" }
2078
+ },
2079
+ // Suppress ref error for now
2080
+ { suppressRefError: true }
2081
+ ),
2069
2082
  ...rest,
2070
2083
  children
2071
2084
  }
@@ -2073,13 +2086,13 @@ var MenuContent = ({
2073
2086
  };
2074
2087
 
2075
2088
  // src/MenuFooter/MenuFooter.tsx
2076
- var import_react5 = require("react");
2089
+ var import_react6 = require("react");
2077
2090
 
2078
2091
  // src/MenuFooter/styles.tsx
2079
- var import_styled_components7 = __toESM(require("styled-components"));
2092
+ var import_styled_components6 = __toESM(require("styled-components"));
2080
2093
  var import_seeds_react_box2 = require("@sproutsocial/seeds-react-box");
2081
- var StyledMenuFooterBox = (0, import_styled_components7.default)(import_seeds_react_box2.Box)`
2082
- padding: ${(p) => p.theme.space[350]};
2094
+ var StyledMenuFooterBox = (0, import_styled_components6.default)(import_seeds_react_box2.Box)`
2095
+ padding: ${(p) => p.theme.space[400]};
2083
2096
  border-top: 1px solid ${(p) => p.theme.colors.container.border.base};
2084
2097
  `;
2085
2098
 
@@ -2090,19 +2103,19 @@ var MenuFooter = ({ children, ...rest }) => {
2090
2103
  };
2091
2104
 
2092
2105
  // src/MenuGroup/MenuGroup.tsx
2093
- var import_react8 = require("react");
2106
+ var import_react9 = require("react");
2094
2107
 
2095
2108
  // src/MenuGroup/styles.tsx
2096
- var import_styled_components10 = __toESM(require("styled-components"));
2109
+ var import_styled_components9 = __toESM(require("styled-components"));
2097
2110
 
2098
2111
  // ../seeds-react-text/dist/esm/index.js
2099
- var import_react6 = require("react");
2112
+ var import_react7 = require("react");
2113
+ var import_styled_components7 = __toESM(require("styled-components"));
2100
2114
  var import_styled_components8 = __toESM(require("styled-components"));
2101
- var import_styled_components9 = __toESM(require("styled-components"));
2102
2115
  var import_seeds_react_system_props = require("@sproutsocial/seeds-react-system-props");
2103
2116
  var import_jsx_runtime7 = require("react/jsx-runtime");
2104
- var import_react7 = require("react");
2105
- var Container = import_styled_components9.default.span`
2117
+ var import_react8 = require("react");
2118
+ var Container = import_styled_components8.default.span`
2106
2119
  margin: 0;
2107
2120
  padding-left: 0;
2108
2121
  padding-right: 0;
@@ -2111,14 +2124,14 @@ var Container = import_styled_components9.default.span`
2111
2124
  return props.isItalicized && "italic";
2112
2125
  }};
2113
2126
 
2114
- ${(props) => props.truncated && import_styled_components9.css`
2127
+ ${(props) => props.truncated && import_styled_components8.css`
2115
2128
  display: block;
2116
2129
  overflow: hidden;
2117
2130
  white-space: nowrap;
2118
2131
  text-overflow: ellipsis;
2119
2132
  `}
2120
2133
 
2121
- ${(props) => props.breakWord && import_styled_components9.css`
2134
+ ${(props) => props.breakWord && import_styled_components8.css`
2122
2135
  word-break: break-word;
2123
2136
  hyphens: auto;
2124
2137
  `}
@@ -2130,34 +2143,34 @@ var Container = import_styled_components9.default.span`
2130
2143
  ${import_seeds_react_system_props.TYPOGRAPHY}
2131
2144
  `;
2132
2145
  var styles_default = Container;
2133
- var Headline = (0, import_styled_components8.default)(styles_default)`
2146
+ var Headline = (0, import_styled_components7.default)(styles_default)`
2134
2147
  color: ${(props) => props.theme.colors.text.headline};
2135
2148
  font-weight: ${(props) => props.theme.fontWeights.bold};
2136
2149
  ${(props) => props.theme.typography[400]}
2137
2150
  `;
2138
- var SubHeadline = (0, import_styled_components8.default)(styles_default)`
2151
+ var SubHeadline = (0, import_styled_components7.default)(styles_default)`
2139
2152
  color: ${(props) => props.theme.colors.text.headline};
2140
2153
  font-weight: ${(props) => props.theme.fontWeights.bold};
2141
2154
  ${(props) => props.theme.typography[300]}
2142
2155
  `;
2143
- var SmallSubHeadline = (0, import_styled_components8.default)(styles_default)`
2156
+ var SmallSubHeadline = (0, import_styled_components7.default)(styles_default)`
2144
2157
  color: ${(props) => props.theme.colors.text.headline};
2145
2158
  font-weight: ${(props) => props.theme.fontWeights.bold};
2146
2159
  ${(props) => props.theme.typography[200]}
2147
2160
  `;
2148
- var Byline = (0, import_styled_components8.default)(styles_default)`
2161
+ var Byline = (0, import_styled_components7.default)(styles_default)`
2149
2162
  color: ${(props) => props.theme.colors.text.subtext};
2150
2163
  ${(props) => props.theme.typography[200]}
2151
2164
  `;
2152
- var SmallByline = (0, import_styled_components8.default)(styles_default)`
2165
+ var SmallByline = (0, import_styled_components7.default)(styles_default)`
2153
2166
  color: ${(props) => props.theme.colors.text.subtext};
2154
2167
  ${(props) => props.theme.typography[100]}
2155
2168
  `;
2156
- var BodyCopy = (0, import_styled_components8.default)(styles_default)`
2169
+ var BodyCopy = (0, import_styled_components7.default)(styles_default)`
2157
2170
  color: ${(props) => props.theme.colors.text.body};
2158
2171
  ${(props) => props.theme.typography[300]}
2159
2172
  `;
2160
- var SmallBodyCopy = (0, import_styled_components8.default)(styles_default)`
2173
+ var SmallBodyCopy = (0, import_styled_components7.default)(styles_default)`
2161
2174
  color: ${(props) => props.theme.colors.text.body};
2162
2175
  ${(props) => props.theme.typography[200]}
2163
2176
  `;
@@ -2175,31 +2188,45 @@ var Text = ({ fontSize: fontSize2, children, qa, color: color2, ...rest }) => {
2175
2188
  }
2176
2189
  );
2177
2190
  };
2178
- Headline.displayName = "Text.Headline";
2179
- SubHeadline.displayName = "Text.SubHeadline";
2180
- SmallSubHeadline.displayName = "Text.SmallSubHeadline";
2181
- Byline.displayName = "Text.Byline";
2182
- SmallByline.displayName = "Text.SmallByline";
2183
- BodyCopy.displayName = "Text.BodyCopy";
2184
- SmallBodyCopy.displayName = "Text.SmallBodyCopy";
2185
- Text.Headline = Headline;
2186
- Text.SubHeadline = SubHeadline;
2187
- Text.SmallSubHeadline = SmallSubHeadline;
2188
- Text.Byline = Byline;
2189
- Text.SmallByline = SmallByline;
2190
- Text.BodyCopy = BodyCopy;
2191
- Text.SmallBodyCopy = SmallBodyCopy;
2191
+ var withTextLogic = (Component) => {
2192
+ return ({ children, ...props }) => {
2193
+ const qaText = typeof children === "string" ? children : void 0;
2194
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Component, { "data-qa-text": qaText, ...props, children });
2195
+ };
2196
+ };
2197
+ var HeadlineWithLogic = withTextLogic(Headline);
2198
+ HeadlineWithLogic.displayName = "Text.Headline";
2199
+ Text.Headline = HeadlineWithLogic;
2200
+ var SubHeadlineWithLogic = withTextLogic(SubHeadline);
2201
+ SubHeadlineWithLogic.displayName = "Text.SubHeadline";
2202
+ Text.SubHeadline = SubHeadlineWithLogic;
2203
+ var SmallSubHeadlineWithLogic = withTextLogic(SmallSubHeadline);
2204
+ SmallSubHeadlineWithLogic.displayName = "Text.SmallSubHeadline";
2205
+ Text.SmallSubHeadline = SmallSubHeadlineWithLogic;
2206
+ var BylineWithLogic = withTextLogic(Byline);
2207
+ BylineWithLogic.displayName = "Text.Byline";
2208
+ Text.Byline = BylineWithLogic;
2209
+ var SmallBylineWithLogic = withTextLogic(SmallByline);
2210
+ SmallBylineWithLogic.displayName = "Text.SmallByline";
2211
+ Text.SmallByline = SmallBylineWithLogic;
2212
+ var BodyCopyWithLogic = withTextLogic(BodyCopy);
2213
+ BodyCopyWithLogic.displayName = "Text.BodyCopy";
2214
+ Text.BodyCopy = BodyCopyWithLogic;
2215
+ var SmallBodyCopyWithLogic = withTextLogic(SmallBodyCopy);
2216
+ SmallBodyCopyWithLogic.displayName = "Text.SmallBodyCopy";
2217
+ Text.SmallBodyCopy = SmallBodyCopyWithLogic;
2192
2218
  var Text_default = Text;
2193
2219
  var src_default = Text_default;
2194
2220
 
2195
2221
  // src/MenuGroup/styles.tsx
2196
- var StyledMenuGroup = import_styled_components10.default.li`
2222
+ var StyledMenuGroup = import_styled_components9.default.li`
2197
2223
  &:not(:last-child) {
2198
2224
  border-bottom: 1px solid
2199
2225
  ${({ theme: theme2 }) => theme2.colors.container.border.base};
2200
2226
  }
2201
2227
  list-style: none;
2202
2228
  margin: 0;
2229
+
2203
2230
  ${border}
2204
2231
  ${position}
2205
2232
  ${color}
@@ -2208,13 +2235,13 @@ var StyledMenuGroup = import_styled_components10.default.li`
2208
2235
  ${layout}
2209
2236
  ${space}
2210
2237
  `;
2211
- var StyledTitle = (0, import_styled_components10.default)(src_default.SmallSubHeadline)`
2212
- margin: ${({ theme: theme2 }) => theme2.space[200]} 0px
2213
- ${({ theme: theme2 }) => theme2.space[300]} ${({ theme: theme2 }) => theme2.space[300]};
2238
+ var StyledTitle = (0, import_styled_components9.default)(src_default.SmallSubHeadline)`
2239
+ margin: ${({ theme: theme2 }) => theme2.space[400]} ${({ theme: theme2 }) => theme2.space[400]}
2240
+ 0px ${({ theme: theme2 }) => theme2.space[400]};
2214
2241
  `;
2215
- var StyledMenuGroupUl = import_styled_components10.default.ul`
2242
+ var StyledMenuGroupUl = import_styled_components9.default.ul`
2216
2243
  margin: 0;
2217
- padding: ${({ theme: theme2 }) => theme2.space[300]};
2244
+ padding: 0;
2218
2245
  `;
2219
2246
 
2220
2247
  // src/MenuGroup/MenuGroup.tsx
@@ -2235,7 +2262,7 @@ var MenuGroup = ({
2235
2262
  color: color2,
2236
2263
  ...rest,
2237
2264
  children: [
2238
- title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { as: titleAs, id: titleId, children: title }),
2265
+ title && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledTitle, { role: "heading", as: titleAs, id: titleId, children: title }),
2239
2266
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(StyledMenuGroupUl, { children })
2240
2267
  ]
2241
2268
  }
@@ -2243,24 +2270,24 @@ var MenuGroup = ({
2243
2270
  };
2244
2271
 
2245
2272
  // src/MenuRoot/MenuRoot.tsx
2246
- var import_react9 = require("react");
2247
- var import_styled_components11 = __toESM(require("styled-components"));
2273
+ var import_react10 = require("react");
2274
+ var import_styled_components10 = __toESM(require("styled-components"));
2248
2275
  var import_seeds_react_popout = require("@sproutsocial/seeds-react-popout");
2249
2276
  var import_jsx_runtime9 = require("react/jsx-runtime");
2250
- var CustomPopoutContent = (0, import_styled_components11.default)(import_seeds_react_popout.Popout.Content)`
2277
+ var CustomPopoutContent = (0, import_styled_components10.default)(import_seeds_react_popout.Popout.Content)`
2251
2278
  padding: 0;
2252
2279
  margin-left: 0;
2253
2280
  margin-right: 0;
2254
2281
  `;
2255
2282
  var MenuRoot = ({
2256
2283
  children,
2257
- triggerElement,
2284
+ menuToggleElement,
2258
2285
  popoutProps,
2259
2286
  width: width2 = "300px",
2260
2287
  ...contextProps
2261
2288
  }) => {
2262
- const { isListbox, isOpen, openMenu, closeMenu, getMenuProps } = contextProps;
2263
- const setIsOpen = (0, import_react9.useCallback)(
2289
+ const { isOpen, openMenu, closeMenu } = contextProps;
2290
+ const setIsOpen = (0, import_react10.useCallback)(
2264
2291
  (newIsOpen) => {
2265
2292
  newIsOpen ? openMenu?.() : closeMenu?.();
2266
2293
  },
@@ -2271,19 +2298,7 @@ var MenuRoot = ({
2271
2298
  {
2272
2299
  isOpen: !!isOpen,
2273
2300
  setIsOpen,
2274
- content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CustomPopoutContent, { width: width2, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2275
- "div",
2276
- {
2277
- ...getMenuProps?.(
2278
- {
2279
- ...isListbox ? {} : { role: "menu" }
2280
- },
2281
- // Suppress ref error for now
2282
- { suppressRefError: true }
2283
- ),
2284
- children
2285
- }
2286
- ) }),
2301
+ content: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CustomPopoutContent, { width: width2, children }),
2287
2302
  focusLockProps: {
2288
2303
  // correct jerking motion when scrolling while the Popout is open
2289
2304
  // returnFocus: false,
@@ -2291,13 +2306,13 @@ var MenuRoot = ({
2291
2306
  },
2292
2307
  disableWrapperAria: true,
2293
2308
  ...popoutProps,
2294
- children: triggerElement
2309
+ children: menuToggleElement
2295
2310
  }
2296
2311
  ) });
2297
2312
  };
2298
2313
 
2299
2314
  // src/MenuLabel.tsx
2300
- var import_react10 = require("react");
2315
+ var import_react11 = require("react");
2301
2316
  var import_jsx_runtime10 = require("react/jsx-runtime");
2302
2317
  var MenuLabel = ({ children, ...rest }) => {
2303
2318
  const { getLabelProps } = useMenuContext();
@@ -2305,14 +2320,14 @@ var MenuLabel = ({ children, ...rest }) => {
2305
2320
  };
2306
2321
 
2307
2322
  // src/MenuToggleButton.tsx
2308
- var import_react11 = require("react");
2323
+ var import_react12 = require("react");
2309
2324
  var import_seeds_react_button = require("@sproutsocial/seeds-react-button");
2310
2325
  var import_jsx_runtime11 = require("react/jsx-runtime");
2311
2326
  var MenuToggleButton = ({
2312
2327
  children,
2313
2328
  ...rest
2314
2329
  }) => {
2315
- const { getToggleButtonProps, isListbox, getDropdownProps } = (0, import_react11.useContext)(MenuContext);
2330
+ const { getToggleButtonProps, isListbox, getDropdownProps } = (0, import_react12.useContext)(MenuContext);
2316
2331
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2317
2332
  import_seeds_react_button.Button,
2318
2333
  {
@@ -2330,11 +2345,11 @@ var MenuToggleButton = ({
2330
2345
  };
2331
2346
 
2332
2347
  // src/ActionMenu/ActionMenu.tsx
2333
- var import_react13 = require("react");
2348
+ var import_react14 = __toESM(require("react"));
2334
2349
  var import_downshift2 = require("downshift");
2335
2350
 
2336
2351
  // src/hooks/useItemsFromChildren.tsx
2337
- var import_react12 = __toESM(require("react"));
2352
+ var import_react13 = __toESM(require("react"));
2338
2353
  var walkAllChildren = (children, callback) => {
2339
2354
  const walk = (element, parents2) => {
2340
2355
  if (element === null || element === void 0)
@@ -2342,12 +2357,12 @@ var walkAllChildren = (children, callback) => {
2342
2357
  callback(element, parents2);
2343
2358
  const newParents = [...parents2, element];
2344
2359
  const children2 = element.props?.children;
2345
- import_react12.default.Children.toArray(children2).forEach((child) => {
2360
+ import_react13.default.Children.toArray(children2).forEach((child) => {
2346
2361
  walk(child, newParents);
2347
2362
  });
2348
2363
  };
2349
2364
  const parents = [];
2350
- import_react12.default.Children.toArray(children).forEach((child) => {
2365
+ import_react13.default.Children.toArray(children).forEach((child) => {
2351
2366
  walk(child, parents);
2352
2367
  });
2353
2368
  };
@@ -2357,7 +2372,7 @@ var checkIfIsElement = (element, name) => {
2357
2372
  var getAllMenuItems = (children) => {
2358
2373
  const allMenuItems = [];
2359
2374
  walkAllChildren(children, (element, parents) => {
2360
- if (checkIfIsElement(element, "MenuItem") || checkIfIsElement(element, "MenuItemSelectable")) {
2375
+ if (checkIfIsElement(element, "MenuItem")) {
2361
2376
  allMenuItems.push({
2362
2377
  element,
2363
2378
  parents
@@ -2369,7 +2384,7 @@ var getAllMenuItems = (children) => {
2369
2384
  var useItemsFromChildren = ({
2370
2385
  children
2371
2386
  }) => {
2372
- const { allMenuItems, menuItemsMap } = (0, import_react12.useMemo)(() => {
2387
+ const { allMenuItems, menuItemsMap } = (0, import_react13.useMemo)(() => {
2373
2388
  const allMenuItemElements = getAllMenuItems(children);
2374
2389
  const menuItemsMap2 = {};
2375
2390
  const allMenuItems2 = allMenuItemElements.map(
@@ -2417,37 +2432,50 @@ var itemToString = (item) => {
2417
2432
 
2418
2433
  // src/ActionMenu/ActionMenu.tsx
2419
2434
  var import_jsx_runtime12 = require("react/jsx-runtime");
2435
+ var handleStateChange = (changes, currentSelectedItem) => {
2436
+ if (!(changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton)) {
2437
+ return;
2438
+ }
2439
+ const selectedItem = changes.selectedItem || currentSelectedItem;
2440
+ if (!selectedItem)
2441
+ return;
2442
+ if (selectedItem.element?.props?.disabled) {
2443
+ return;
2444
+ }
2445
+ const isEnterKeyDown = changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter;
2446
+ const selectedItemProps = selectedItem.element?.props;
2447
+ if (selectedItemProps?.onClick) {
2448
+ const syntheticKeyboardEvent = new KeyboardEvent("keydown", {
2449
+ key: isEnterKeyDown ? "Enter" : " ",
2450
+ code: isEnterKeyDown ? "Enter" : "Space",
2451
+ bubbles: true,
2452
+ cancelable: true,
2453
+ view: window
2454
+ });
2455
+ selectedItemProps?.onClick?.(
2456
+ syntheticKeyboardEvent
2457
+ );
2458
+ }
2459
+ if (selectedItemProps?.href) {
2460
+ if (selectedItemProps.target) {
2461
+ window.open(selectedItemProps.href, selectedItemProps.target);
2462
+ } else {
2463
+ window.location.href = selectedItemProps?.href;
2464
+ }
2465
+ }
2466
+ };
2420
2467
  var ActionMenu = ({
2421
2468
  children,
2422
2469
  stateReducer: externalStateReducer,
2423
2470
  ...useSelectProps
2424
2471
  }) => {
2425
2472
  const { allMenuItems, menuItemsMap } = useItemsFromChildren({ children });
2426
- const handleStateChange = (changes) => {
2427
- const { selectedItem } = changes;
2428
- if (selectedItem.element?.props?.disabled) {
2429
- return;
2430
- }
2431
- if (changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter || changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton) {
2432
- const isEnterKeyDown = changes.type === import_downshift2.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter;
2433
- const selectedItemProps = selectedItem.element?.props;
2434
- const syntheticKeyboardEvent = new KeyboardEvent("keydown", {
2435
- key: isEnterKeyDown ? "Enter" : " ",
2436
- code: isEnterKeyDown ? "Enter" : "Space",
2437
- bubbles: true,
2438
- cancelable: true,
2439
- view: window
2440
- });
2441
- selectedItemProps?.onClick?.(
2442
- syntheticKeyboardEvent
2443
- );
2444
- }
2445
- };
2473
+ const [currentSelectedItem, setCurrentSelectedItem] = import_react14.default.useState(null);
2446
2474
  const { isOpen, ...useSelectReturnProps } = (0, import_downshift2.useSelect)({
2447
2475
  ...defaultUseSelectProps,
2448
2476
  items: allMenuItems,
2449
2477
  itemToString,
2450
- onSelectedItemChange: handleStateChange,
2478
+ onStateChange: (changes) => handleStateChange(changes, currentSelectedItem),
2451
2479
  stateReducer: (state, actionAndChanges) => {
2452
2480
  let newState;
2453
2481
  newState = useSelectStateReducer(state, actionAndChanges);
@@ -2458,6 +2486,9 @@ var ActionMenu = ({
2458
2486
  },
2459
2487
  ...useSelectProps
2460
2488
  });
2489
+ (0, import_react14.useEffect)(() => {
2490
+ setCurrentSelectedItem(useSelectReturnProps.selectedItem);
2491
+ }, [useSelectReturnProps.selectedItem]);
2461
2492
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2462
2493
  MenuRoot,
2463
2494
  {
@@ -2476,7 +2507,7 @@ var ActionMenu = ({
2476
2507
  };
2477
2508
 
2478
2509
  // src/SingleSelectMenu/SingleSelectMenu.tsx
2479
- var import_react14 = require("react");
2510
+ var import_react15 = require("react");
2480
2511
  var import_downshift3 = require("downshift");
2481
2512
  var import_jsx_runtime13 = require("react/jsx-runtime");
2482
2513
  var SingleSelectMenu = ({
@@ -2517,7 +2548,7 @@ var SingleSelectMenu = ({
2517
2548
  };
2518
2549
 
2519
2550
  // src/MultiSelectMenu/MultiSelectMenu.tsx
2520
- var import_react15 = require("react");
2551
+ var import_react16 = require("react");
2521
2552
  var import_downshift4 = require("downshift");
2522
2553
  var import_jsx_runtime14 = require("react/jsx-runtime");
2523
2554
  var selectReducerForMultiSelect = (state, actionAndChanges) => {
@@ -2587,7 +2618,6 @@ var MultiSelectMenu = ({
2587
2618
  case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
2588
2619
  case import_downshift4.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
2589
2620
  case import_downshift4.useSelect.stateChangeTypes.ItemClick:
2590
- case import_downshift4.useSelect.stateChangeTypes.ToggleButtonBlur:
2591
2621
  if (!newSelectedItem)
2592
2622
  break;
2593
2623
  if (selectedItems?.find((item) => item?.id === newSelectedItem.id)) {
@@ -2637,20 +2667,19 @@ var MultiSelectMenu = ({
2637
2667
  MenuGroup,
2638
2668
  MenuHeader,
2639
2669
  MenuItem,
2670
+ MenuItemAction,
2640
2671
  MenuItemContainer,
2641
- MenuItemSelectable,
2642
- MenuItemSelectableAction,
2643
- MenuItemSelectableRow,
2644
- MenuItemSelectableText,
2672
+ MenuItemRow,
2673
+ MenuItemText,
2645
2674
  MenuLabel,
2646
2675
  MenuProvider,
2647
2676
  MenuRoot,
2648
2677
  MenuToggleButton,
2649
2678
  MultiSelectMenu,
2650
- SelectionIndicator,
2651
2679
  SingleSelectMenu,
2652
2680
  StyledMenuGroup,
2653
2681
  StyledMenuGroupUl,
2682
+ StyledMenuItem,
2654
2683
  StyledTitle,
2655
2684
  defaultUseSelectProps,
2656
2685
  useItemsFromChildren,