@sproutsocial/seeds-react-menu 1.16.16 → 1.18.0

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 (84) hide show
  1. package/.turbo/turbo-build.log +14 -22
  2. package/CHANGELOG.md +51 -0
  3. package/dist/esm/index.js +542 -229
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/v3/index.js +870 -1081
  6. package/dist/esm/v3/index.js.map +1 -1
  7. package/dist/v3/index.d.mts +82 -38
  8. package/dist/v3/index.d.ts +82 -38
  9. package/dist/v3/index.js +887 -1098
  10. package/dist/v3/index.js.map +1 -1
  11. package/dist/v3/menu.css +947 -0
  12. package/package.json +20 -21
  13. package/src/ActionMenu/ActionMenu.stories.tsx +1 -1
  14. package/src/Autocomplete/Autocomplete.stories.tsx +1 -1
  15. package/src/MenuContent/MenuContent.stories.tsx +1 -1
  16. package/src/MenuFooter/MenuFooter.stories.tsx +1 -1
  17. package/src/MenuGroup/MenuGroup.stories.tsx +1 -1
  18. package/src/MenuHeader/MenuHeader.stories.tsx +1 -1
  19. package/src/MenuItem/MenuItem.stories.tsx +1 -1
  20. package/src/MenuToggleButton/MenuToggleButton.stories.tsx +1 -1
  21. package/src/MultiSelectMenu/MultiSelectMenu.stories.tsx +1 -1
  22. package/src/NestedMenu/NestedMenu.stories.tsx +1 -1
  23. package/src/SingleSelectMenu/SingleSelectMenu.stories.tsx +1 -1
  24. package/src/SubmenuItem/SubmenuItem.stories.tsx +1 -1
  25. package/src/v3/ActionMenu.stories.tsx +1 -1
  26. package/src/v3/ActionMenuStyles.tsx +169 -149
  27. package/src/v3/Common/ComboboxStyles.tsx +396 -511
  28. package/src/v3/Common/SelectIcons.tsx +17 -8
  29. package/src/v3/Common/SelectItem.tsx +25 -38
  30. package/src/v3/Common/SelectStyles.tsx +146 -144
  31. package/src/v3/Common/cn.ts +38 -0
  32. package/src/v3/MenuButton.stories.tsx +1 -1
  33. package/src/v3/MenuButtonStyles.tsx +55 -34
  34. package/src/v3/ModalStories.stories.tsx +1 -1
  35. package/src/v3/MultiCombobox.stories.tsx +1 -1
  36. package/src/v3/MultiCombobox.tsx +7 -0
  37. package/src/v3/MultiSearchableSelect.stories.tsx +1 -1
  38. package/src/v3/MultiSearchableSelect.tsx +15 -8
  39. package/src/v3/MultiSelect.stories.tsx +1 -1
  40. package/src/v3/MultiSelect.tsx +20 -17
  41. package/src/v3/SingleCombobox.stories.tsx +1 -1
  42. package/src/v3/SingleCombobox.tsx +7 -0
  43. package/src/v3/SingleSearchableSelect.stories.tsx +1 -1
  44. package/src/v3/SingleSearchableSelect.tsx +7 -0
  45. package/src/v3/SingleSelect.stories.tsx +1 -1
  46. package/src/v3/SingleSelect.tsx +22 -14
  47. package/src/v3/__tests__/ariaLabels.test.tsx +133 -0
  48. package/src/v3/menu.css +947 -0
  49. package/tsup.config.ts +0 -1
  50. package/dist/esm/chunk-ROQATIB7.js +0 -357
  51. package/dist/esm/chunk-ROQATIB7.js.map +0 -1
  52. package/dist/esm/v2/index.js +0 -2089
  53. package/dist/esm/v2/index.js.map +0 -1
  54. package/dist/v2/index.d.mts +0 -108
  55. package/dist/v2/index.d.ts +0 -108
  56. package/dist/v2/index.js +0 -2280
  57. package/dist/v2/index.js.map +0 -1
  58. package/src/v2/Autocomplete/Autocomplete.stories.tsx +0 -645
  59. package/src/v2/Autocomplete/MultiAutocomplete.tsx +0 -487
  60. package/src/v2/Autocomplete/SingleAutocomplete.tsx +0 -366
  61. package/src/v2/Autocomplete/index.ts +0 -2
  62. package/src/v2/Common-V2/ComboboxContent.tsx +0 -457
  63. package/src/v2/Common-V2/MenuGroup.tsx +0 -60
  64. package/src/v2/Common-V2/MenuGroupTypes.ts +0 -30
  65. package/src/v2/Common-V2/MenuHeading.tsx +0 -83
  66. package/src/v2/Common-V2/MenuItem.tsx +0 -138
  67. package/src/v2/Common-V2/Popout.tsx +0 -124
  68. package/src/v2/Common-V2/PopoutTypes.tsx +0 -109
  69. package/src/v2/Common-V2/SelectToggleButton.tsx +0 -99
  70. package/src/v2/Common-V2/index.ts +0 -11
  71. package/src/v2/Common-V2/props.ts +0 -84
  72. package/src/v2/Common-V2/styles.tsx +0 -41
  73. package/src/v2/Common-V2/types.ts +0 -16
  74. package/src/v2/Common-V2/useHighlightedIndex.ts +0 -62
  75. package/src/v2/Common-V2/utils.ts +0 -238
  76. package/src/v2/SearchableSelect/AutocompleteContent.tsx +0 -325
  77. package/src/v2/SearchableSelect/SearchableMultiSelect.tsx +0 -527
  78. package/src/v2/SearchableSelect/SearchableSelect.tsx +0 -395
  79. package/src/v2/SearchableSelect/index.ts +0 -12
  80. package/src/v2/Select/MultiSelect.tsx +0 -417
  81. package/src/v2/Select/Select.stories.tsx +0 -593
  82. package/src/v2/Select/SingleSelect.tsx +0 -285
  83. package/src/v2/Select/index.ts +0 -2
  84. package/src/v2/index.ts +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sproutsocial/seeds-react-menu",
3
- "version": "1.16.16",
3
+ "version": "1.18.0",
4
4
  "description": "Seeds React Menu",
5
5
  "author": "Sprout Social, Inc.",
6
6
  "license": "MIT",
@@ -13,20 +13,19 @@
13
13
  "import": "./dist/esm/index.js",
14
14
  "require": "./dist/index.js"
15
15
  },
16
- "./experimental": {
17
- "types": "./dist/v2/index.d.ts",
18
- "import": "./dist/esm/v2/index.js",
19
- "require": "./dist/v2/index.js"
20
- },
21
16
  "./base": {
22
17
  "types": "./dist/v3/index.d.ts",
23
18
  "import": "./dist/esm/v3/index.js",
24
19
  "require": "./dist/v3/index.js"
25
- }
20
+ },
21
+ "./base/css": "./dist/v3/menu.css"
26
22
  },
23
+ "sideEffects": [
24
+ "**/*.css"
25
+ ],
27
26
  "scripts": {
28
- "build": "tsup --dts",
29
- "build:debug": "tsup --dts --metafile",
27
+ "build": "tsup --dts && cp src/v3/menu.css dist/v3/menu.css",
28
+ "build:debug": "tsup --dts --metafile && cp src/v3/menu.css dist/v3/menu.css",
30
29
  "dev": "tsup --watch --dts",
31
30
  "clean": "rm -rf .turbo dist",
32
31
  "clean:modules": "rm -rf node_modules",
@@ -36,18 +35,18 @@
36
35
  },
37
36
  "dependencies": {
38
37
  "@radix-ui/react-popover": "^1.1.2",
39
- "@sproutsocial/seeds-react-box": "^1.1.31",
40
- "@sproutsocial/seeds-react-button": "^2.3.8",
41
- "@sproutsocial/seeds-react-checkbox": "^1.3.53",
42
- "@sproutsocial/seeds-react-icon": "^2.5.1",
43
- "@sproutsocial/seeds-react-input": "^1.5.41",
44
- "@sproutsocial/seeds-react-label": "^1.0.33",
45
- "@sproutsocial/seeds-react-popout": "^2.5.22",
46
- "@sproutsocial/seeds-react-radio": "^1.3.34",
47
- "@sproutsocial/seeds-react-switch": "^1.2.51",
38
+ "@sproutsocial/seeds-react-box": "^1.1.32",
39
+ "@sproutsocial/seeds-react-button": "^2.3.9",
40
+ "@sproutsocial/seeds-react-checkbox": "^1.3.54",
41
+ "@sproutsocial/seeds-react-icon": "^2.5.2",
42
+ "@sproutsocial/seeds-react-input": "^1.5.42",
43
+ "@sproutsocial/seeds-react-label": "^1.0.34",
44
+ "@sproutsocial/seeds-react-popout": "^2.5.23",
45
+ "@sproutsocial/seeds-react-radio": "^1.3.35",
46
+ "@sproutsocial/seeds-react-switch": "^1.2.52",
48
47
  "@sproutsocial/seeds-react-system-props": "^3.2.1",
49
- "@sproutsocial/seeds-react-theme": "^4.5.0",
50
- "@sproutsocial/seeds-react-token-input": "^1.4.63",
48
+ "@sproutsocial/seeds-react-theme": "^4.5.1",
49
+ "@sproutsocial/seeds-react-token-input": "^1.4.64",
51
50
  "@sproutsocial/seeds-react-utilities": "^4.3.0",
52
51
  "@base-ui/react": "^1.3.0",
53
52
  "@tanstack/react-virtual": "^3.13.12",
@@ -57,7 +56,7 @@
57
56
  "styled-system": "^5.1.5"
58
57
  },
59
58
  "devDependencies": {
60
- "@sproutsocial/seeds-react-tooltip": "^1.1.38",
59
+ "@sproutsocial/seeds-react-tooltip": "^1.1.39",
61
60
  "@sproutsocial/eslint-config-seeds": "*",
62
61
  "@sproutsocial/seeds-react-testing-library": "*",
63
62
  "@sproutsocial/seeds-testing": "*",
@@ -42,7 +42,7 @@ type ActionMenuStoryArgs = TypeActionMenuProps & {
42
42
  type Story = StoryObj<ActionMenuStoryArgs>;
43
43
 
44
44
  const meta: Meta<ActionMenuStoryArgs> = {
45
- title: "Under Development/ActionMenu",
45
+ title: "Components/Menus/v1/ActionMenu",
46
46
  component: ActionMenu,
47
47
  argTypes: {
48
48
  "Trigger Appearance": {
@@ -25,7 +25,7 @@ import Button from "@sproutsocial/seeds-react-button";
25
25
  type CustomAutocompleteArgs = React.ComponentProps<typeof Autocomplete>;
26
26
 
27
27
  const meta: Meta<CustomAutocompleteArgs> = {
28
- title: "Under Development/Autocomplete",
28
+ title: "Components/Menus/v1/Autocomplete",
29
29
  component: Autocomplete,
30
30
  parameters: {
31
31
  controls: {
@@ -18,7 +18,7 @@ import {
18
18
  } from "../index";
19
19
 
20
20
  const meta: Meta<typeof MenuContent> = {
21
- title: "Under Development/Primitives/MenuContent",
21
+ title: "Components/Menus/v1/Primitives/MenuContent",
22
22
  component: MenuContent,
23
23
  };
24
24
 
@@ -31,7 +31,7 @@ type Story = StoryObj<MenuFooterStoryArgs>;
31
31
  const optionsArr = ["Button Example", "Link Example", "Text Example", "none"];
32
32
 
33
33
  const meta: Meta<MenuFooterStoryArgs> = {
34
- title: "Under Development/Primitives/MenuFooter",
34
+ title: "Components/Menus/v1/Primitives/MenuFooter",
35
35
  component: MenuFooter,
36
36
  parameters: {
37
37
  controls: { expanded: true, sort: "requiredFirst" },
@@ -17,7 +17,7 @@ import {
17
17
  } from "../index";
18
18
 
19
19
  const meta: Meta<typeof MenuGroup> = {
20
- title: "Under Development/Primitives/MenuGroup",
20
+ title: "Components/Menus/v1/Primitives/MenuGroup",
21
21
  component: MenuGroup,
22
22
  decorators: [
23
23
  (Story) => (
@@ -29,7 +29,7 @@ interface MenuHeaderStoryArgs extends TypeMenuHeaderProps {
29
29
  type Story = StoryObj<MenuHeaderStoryArgs>;
30
30
 
31
31
  const meta: Meta<MenuHeaderStoryArgs> = {
32
- title: "Under Development/Primitives/MenuHeader",
32
+ title: "Components/Menus/v1/Primitives/MenuHeader",
33
33
  component: MenuHeader,
34
34
  parameters: {
35
35
  controls: { expanded: true, sort: "requiredFirst" },
@@ -34,7 +34,7 @@ interface MenuItemStoryArgs extends TypeMenuItemProps {
34
34
  type Story = StoryObj<MenuItemStoryArgs>;
35
35
 
36
36
  const meta: Meta<MenuItemStoryArgs> = {
37
- title: "Under Development/Primitives/MenuItem",
37
+ title: "Components/Menus/v1/Primitives/MenuItem",
38
38
  component: MenuItem,
39
39
  decorators: [
40
40
  (Story) => (
@@ -10,7 +10,7 @@ import {
10
10
  } from "../index";
11
11
 
12
12
  const meta: Meta<typeof MenuToggleButton> = {
13
- title: "Under Development/Primitives/MenuToggleButton",
13
+ title: "Components/Menus/v1/Primitives/MenuToggleButton",
14
14
  component: MenuToggleButton,
15
15
  decorators: [
16
16
  (Story) => (
@@ -23,7 +23,7 @@ type TypeMultiSelectMenuStoryProps = TypeMultiSelectMenuProps & {
23
23
  };
24
24
 
25
25
  const meta: Meta<TypeMultiSelectMenuStoryProps> = {
26
- title: "Under Development/MultiSelectMenu",
26
+ title: "Components/Menus/v1/MultiSelectMenu",
27
27
  component: MultiSelectMenu,
28
28
  decorators: [
29
29
  (Story) => (
@@ -23,7 +23,7 @@ import { MotionConfig } from "motion/react";
23
23
  type CustomNestedMenuArgs = React.ComponentProps<typeof NestedMenu>;
24
24
 
25
25
  const meta: Meta<CustomNestedMenuArgs> = {
26
- title: "Under Development/NestedMenu",
26
+ title: "Components/Menus/v1/NestedMenu",
27
27
  component: NestedMenu,
28
28
  parameters: {
29
29
  controls: {
@@ -24,7 +24,7 @@ type CustomSingleSelectArgs = TypeSingleSelectMenuProps & {
24
24
  };
25
25
 
26
26
  const meta: Meta<CustomSingleSelectArgs> = {
27
- title: "Under Development/SingleSelectMenu",
27
+ title: "Components/Menus/v1/SingleSelectMenu",
28
28
  component: SingleSelectMenu,
29
29
  parameters: {
30
30
  controls: {
@@ -18,7 +18,7 @@ type SubmenuItemStoryArgs = TypeMenuItemProps & {
18
18
  type Story = StoryObj<SubmenuItemStoryArgs>;
19
19
 
20
20
  const meta: Meta<SubmenuItemStoryArgs> = {
21
- title: "Under Development/Submenu",
21
+ title: "Components/Menus/v1/Submenu",
22
22
  decorators: [(Story) => <Story />],
23
23
  };
24
24
 
@@ -14,7 +14,7 @@ import {
14
14
  } from "./ActionMenu";
15
15
 
16
16
  const meta: Meta<typeof ActionMenu> = {
17
- title: "Really Under Development/V3/ActionMenu",
17
+ title: "Components/Menus/v3/ActionMenu",
18
18
  component: ActionMenu,
19
19
  decorators: [
20
20
  (Story) => (
@@ -1,154 +1,174 @@
1
+ import * as React from "react";
1
2
  import { Menu } from "@base-ui/react/menu";
2
- import styled, { css } from "styled-components";
3
- import { focusRing } from "@sproutsocial/seeds-react-mixins";
4
-
5
- export const ActionMenuTrigger = styled(Menu.Trigger)``;
6
-
7
- export const ActionMenuPositioner = styled(Menu.Positioner)`
8
- min-width: var(--anchor-width);
9
- z-index: 7;
10
- `;
3
+ import { cn, type WithStringClassName } from "./Common/cn";
4
+
5
+ /**
6
+ * v3 Action Menu surface, rendered with CSS classes from menu.css (imported via
7
+ * @sproutsocial/seeds-react-menu/base/css) instead of styled-components. Each
8
+ * export keeps its previous name and forwards props/refs to the underlying
9
+ * Base UI Menu component.
10
+ */
11
+
12
+ // Trigger had no styles of its own; keep it as a thin pass-through so the
13
+ // existing render/disabled props still reach Menu.Trigger.
14
+ export const ActionMenuTrigger = Menu.Trigger;
15
+
16
+ export const ActionMenuPositioner = React.forwardRef<
17
+ React.ElementRef<typeof Menu.Positioner>,
18
+ WithStringClassName<React.ComponentProps<typeof Menu.Positioner>>
19
+ >(({ className, ...rest }, ref) => (
20
+ <Menu.Positioner
21
+ ref={ref}
22
+ className={cn("seeds-action-menu-positioner", className)}
23
+ {...rest}
24
+ />
25
+ ));
26
+ ActionMenuPositioner.displayName = "ActionMenuPositioner";
11
27
 
12
28
  // Opt out of Base UI Drawer's swipe-to-dismiss pointer capture when the menu
13
29
  // is rendered inside a Drawer. Without this, the Drawer's viewport captures
14
30
  // pointermove/up on portaled popups and MenuItem clicks never fire.
15
- export const ActionMenuPopup = styled(Menu.Popup).attrs({
16
- "data-base-ui-swipe-ignore": "",
17
- })`
18
- font-family: ${({ theme }) => theme.fontFamily};
19
- background: ${({ theme }) => theme.colors.container.background.base};
20
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
21
- border-radius: ${({ theme }) => theme.radii[500]};
22
- box-shadow: ${({ theme }) => theme.shadows.low};
23
- outline: none;
24
- max-height: min(var(--available-height, 400px), 400px);
25
- overflow-y: auto;
26
- padding: ${({ theme }) => theme.space[300]};
27
-
28
- &[data-open] {
29
- animation: action-menu-popup-in 120ms ease-out;
30
- }
31
-
32
- &[data-closed] {
33
- animation: action-menu-popup-out 100ms ease-in;
34
- }
35
-
36
- @keyframes action-menu-popup-in {
37
- from {
38
- opacity: 0;
39
- transform: scale(0.95);
40
- }
41
- to {
42
- opacity: 1;
43
- transform: scale(1);
44
- }
45
- }
46
-
47
- @keyframes action-menu-popup-out {
48
- from {
49
- opacity: 1;
50
- transform: scale(1);
51
- }
52
- to {
53
- opacity: 0;
54
- transform: scale(0.95);
55
- }
56
- }
57
- `;
58
-
59
- export const ActionMenuGroup = styled(Menu.Group)`
60
- display: block;
61
- `;
62
-
63
- export const ActionMenuGroupLabel = styled(Menu.GroupLabel)`
64
- padding: ${({ theme }) => `${theme.space[300]}`};
65
- font-size: ${({ theme }) => theme.typography[100].fontSize};
66
- color: ${({ theme }) => theme.colors.text.body};
67
- `;
68
-
69
- export const ActionMenuSeparator = styled(Menu.Separator)`
70
- height: 1px;
71
- margin: ${({ theme }) => `${theme.space[300]} -${theme.space[300]}`};
72
- background: ${({ theme }) => theme.colors.container.border.base};
73
- `;
74
-
75
- const menuItemStyles = css`
76
- box-sizing: border-box;
77
- display: block;
78
- width: 100%;
79
- border-radius: ${({ theme }) => theme.radii[500]};
80
- background-color: ${({ theme }) => theme.colors.listItem.background.base};
81
- border: 1px solid ${({ theme }) => theme.colors.listItem.background.base};
82
- color: ${({ theme }) => theme.colors.text.body};
83
- font-family: ${({ theme }) => theme.fontFamily};
84
- font-weight: ${({ theme }) => theme.fontWeights.normal};
85
- text-align: left;
86
- text-decoration: none;
87
- padding: ${({ theme }) => theme.space[300]};
88
- outline: 0;
89
- ${({ theme }) => theme.typography[200]};
90
- transition: all ${({ theme }) => theme.duration.fast};
91
- cursor: pointer;
92
- user-select: none;
93
-
94
- &[data-highlighted] {
95
- border-color: ${({ theme }) => theme.colors.listItem.border.base};
96
- background-color: ${({ theme }) => theme.colors.listItem.background.hover};
97
- color: ${({ theme }) => theme.colors.text.body};
98
- text-decoration: none;
99
- }
100
-
101
- &[data-disabled] {
102
- cursor: not-allowed;
103
- opacity: 0.4;
104
- }
105
- `;
106
-
107
- export const StyledMenuItem = styled(Menu.Item)`
108
- ${menuItemStyles}
109
- `;
110
-
111
- export const StyledCheckboxItem = styled(Menu.CheckboxItem)`
112
- ${menuItemStyles}
113
- display: flex;
114
- align-items: center;
115
- gap: ${({ theme }) => theme.space[300]};
116
- `;
117
-
118
- export const StyledRadioItem = styled(Menu.RadioItem)`
119
- ${menuItemStyles}
120
- display: flex;
121
- align-items: center;
122
- gap: ${({ theme }) => theme.space[300]};
123
- `;
124
-
125
- export const StyledCheckboxItemIndicator = styled(Menu.CheckboxItemIndicator)`
126
- display: flex;
127
- align-items: center;
128
- width: 16px;
129
- color: ${({ theme }) => theme.colors.text.body};
130
- `;
131
-
132
- export const StyledRadioItemIndicator = styled(Menu.RadioItemIndicator)`
133
- display: flex;
134
- align-items: center;
135
- width: 16px;
136
- color: ${({ theme }) => theme.colors.text.body};
137
- `;
138
-
139
- export const StyledSubmenuTrigger = styled(Menu.SubmenuTrigger)`
140
- ${menuItemStyles}
141
- display: flex;
142
- align-items: center;
143
- gap: ${({ theme }) => theme.space[300]};
144
- justify-content: space-between;
145
-
146
- &[data-popup-open] {
147
- border-color: ${({ theme }) => theme.colors.listItem.border.base};
148
- background-color: ${({ theme }) => theme.colors.listItem.background.hover};
149
- }
150
- `;
151
-
152
- export const StyledLinkItem = styled(Menu.LinkItem)`
153
- ${menuItemStyles}
154
- `;
31
+ export const ActionMenuPopup = React.forwardRef<
32
+ React.ElementRef<typeof Menu.Popup>,
33
+ WithStringClassName<React.ComponentProps<typeof Menu.Popup>>
34
+ >(({ className, ...rest }, ref) => (
35
+ <Menu.Popup
36
+ ref={ref}
37
+ data-base-ui-swipe-ignore=""
38
+ className={cn("seeds-action-menu-popup", className)}
39
+ {...rest}
40
+ />
41
+ ));
42
+ ActionMenuPopup.displayName = "ActionMenuPopup";
43
+
44
+ export const ActionMenuGroup = React.forwardRef<
45
+ React.ElementRef<typeof Menu.Group>,
46
+ WithStringClassName<React.ComponentProps<typeof Menu.Group>>
47
+ >(({ className, ...rest }, ref) => (
48
+ <Menu.Group
49
+ ref={ref}
50
+ className={cn("seeds-action-menu-group", className)}
51
+ {...rest}
52
+ />
53
+ ));
54
+ ActionMenuGroup.displayName = "ActionMenuGroup";
55
+
56
+ export const ActionMenuGroupLabel = React.forwardRef<
57
+ React.ElementRef<typeof Menu.GroupLabel>,
58
+ WithStringClassName<React.ComponentProps<typeof Menu.GroupLabel>>
59
+ >(({ className, ...rest }, ref) => (
60
+ <Menu.GroupLabel
61
+ ref={ref}
62
+ className={cn("seeds-action-menu-group-label", className)}
63
+ {...rest}
64
+ />
65
+ ));
66
+ ActionMenuGroupLabel.displayName = "ActionMenuGroupLabel";
67
+
68
+ export const ActionMenuSeparator = React.forwardRef<
69
+ React.ElementRef<typeof Menu.Separator>,
70
+ WithStringClassName<React.ComponentProps<typeof Menu.Separator>>
71
+ >(({ className, ...rest }, ref) => (
72
+ <Menu.Separator
73
+ ref={ref}
74
+ className={cn("seeds-action-menu-separator", className)}
75
+ {...rest}
76
+ />
77
+ ));
78
+ ActionMenuSeparator.displayName = "ActionMenuSeparator";
79
+
80
+ export const StyledMenuItem = React.forwardRef<
81
+ React.ElementRef<typeof Menu.Item>,
82
+ WithStringClassName<React.ComponentProps<typeof Menu.Item>>
83
+ >(({ className, ...rest }, ref) => (
84
+ <Menu.Item
85
+ ref={ref}
86
+ className={cn("seeds-action-menu-item", className)}
87
+ {...rest}
88
+ />
89
+ ));
90
+ StyledMenuItem.displayName = "StyledMenuItem";
91
+
92
+ export const StyledCheckboxItem = React.forwardRef<
93
+ React.ElementRef<typeof Menu.CheckboxItem>,
94
+ WithStringClassName<React.ComponentProps<typeof Menu.CheckboxItem>>
95
+ >(({ className, ...rest }, ref) => (
96
+ <Menu.CheckboxItem
97
+ ref={ref}
98
+ className={cn(
99
+ "seeds-action-menu-item",
100
+ "seeds-action-menu-item--flex",
101
+ className
102
+ )}
103
+ {...rest}
104
+ />
105
+ ));
106
+ StyledCheckboxItem.displayName = "StyledCheckboxItem";
107
+
108
+ export const StyledRadioItem = React.forwardRef<
109
+ React.ElementRef<typeof Menu.RadioItem>,
110
+ WithStringClassName<React.ComponentProps<typeof Menu.RadioItem>>
111
+ >(({ className, ...rest }, ref) => (
112
+ <Menu.RadioItem
113
+ ref={ref}
114
+ className={cn(
115
+ "seeds-action-menu-item",
116
+ "seeds-action-menu-item--flex",
117
+ className
118
+ )}
119
+ {...rest}
120
+ />
121
+ ));
122
+ StyledRadioItem.displayName = "StyledRadioItem";
123
+
124
+ export const StyledCheckboxItemIndicator = React.forwardRef<
125
+ React.ElementRef<typeof Menu.CheckboxItemIndicator>,
126
+ WithStringClassName<React.ComponentProps<typeof Menu.CheckboxItemIndicator>>
127
+ >(({ className, ...rest }, ref) => (
128
+ <Menu.CheckboxItemIndicator
129
+ ref={ref}
130
+ className={cn("seeds-action-menu-item-indicator", className)}
131
+ {...rest}
132
+ />
133
+ ));
134
+ StyledCheckboxItemIndicator.displayName = "StyledCheckboxItemIndicator";
135
+
136
+ export const StyledRadioItemIndicator = React.forwardRef<
137
+ React.ElementRef<typeof Menu.RadioItemIndicator>,
138
+ WithStringClassName<React.ComponentProps<typeof Menu.RadioItemIndicator>>
139
+ >(({ className, ...rest }, ref) => (
140
+ <Menu.RadioItemIndicator
141
+ ref={ref}
142
+ className={cn("seeds-action-menu-item-indicator", className)}
143
+ {...rest}
144
+ />
145
+ ));
146
+ StyledRadioItemIndicator.displayName = "StyledRadioItemIndicator";
147
+
148
+ export const StyledSubmenuTrigger = React.forwardRef<
149
+ React.ElementRef<typeof Menu.SubmenuTrigger>,
150
+ WithStringClassName<React.ComponentProps<typeof Menu.SubmenuTrigger>>
151
+ >(({ className, ...rest }, ref) => (
152
+ <Menu.SubmenuTrigger
153
+ ref={ref}
154
+ className={cn(
155
+ "seeds-action-menu-item",
156
+ "seeds-action-menu-submenu-trigger",
157
+ className
158
+ )}
159
+ {...rest}
160
+ />
161
+ ));
162
+ StyledSubmenuTrigger.displayName = "StyledSubmenuTrigger";
163
+
164
+ export const StyledLinkItem = React.forwardRef<
165
+ React.ElementRef<typeof Menu.LinkItem>,
166
+ WithStringClassName<React.ComponentProps<typeof Menu.LinkItem>>
167
+ >(({ className, ...rest }, ref) => (
168
+ <Menu.LinkItem
169
+ ref={ref}
170
+ className={cn("seeds-action-menu-item", className)}
171
+ {...rest}
172
+ />
173
+ ));
174
+ StyledLinkItem.displayName = "StyledLinkItem";