@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
@@ -4,14 +4,13 @@ import {
4
4
  render,
5
5
  screen,
6
6
  waitFor,
7
- act,
8
7
  } from "@sproutsocial/seeds-react-testing-library";
9
8
  import {
10
9
  SingleSelectMenu,
11
10
  MenuToggleButton,
12
11
  MenuContent,
13
12
  MenuGroup,
14
- MenuItemSelectable,
13
+ MenuItem,
15
14
  MenuFooter,
16
15
  } from "../../index";
17
16
  import { Switch } from "@sproutsocial/seeds-react-switch";
@@ -30,16 +29,16 @@ describe("User Behavior", () => {
30
29
  const { user } = render(
31
30
  <SingleSelectMenu
32
31
  onSelectedItemChange={checkOnChange}
33
- triggerElement={
32
+ menuToggleElement={
34
33
  <MenuToggleButton role="button">Click me</MenuToggleButton>
35
34
  }
36
35
  >
37
36
  <MenuContent>
38
37
  <MenuGroup title="Menu Title">
39
38
  {menuItems.map(({ id, label }) => (
40
- <MenuItemSelectable key={id} id={id}>
39
+ <MenuItem key={id} id={id}>
41
40
  {label}
42
- </MenuItemSelectable>
41
+ </MenuItem>
43
42
  ))}
44
43
  </MenuGroup>
45
44
  </MenuContent>
@@ -96,16 +95,16 @@ describe("User Behavior", () => {
96
95
 
97
96
  const { user } = render(
98
97
  <SingleSelectMenu
99
- triggerElement={
98
+ menuToggleElement={
100
99
  <MenuToggleButton role="button">Click me</MenuToggleButton>
101
100
  }
102
101
  >
103
102
  <MenuContent>
104
103
  <MenuGroup title="Menu Title">
105
104
  {menuItems.map(({ id, label }) => (
106
- <MenuItemSelectable key={id} id={id}>
105
+ <MenuItem key={id} id={id}>
107
106
  {label}
108
- </MenuItemSelectable>
107
+ </MenuItem>
109
108
  ))}
110
109
  </MenuGroup>
111
110
  </MenuContent>
@@ -129,20 +128,18 @@ describe("User Behavior", () => {
129
128
  // Check that the menu is still open
130
129
  expect(screen.getByRole("listbox")).toBeVisible();
131
130
  });
132
- });
133
131
 
134
- describe("API", () => {
135
- it("should close automatically on selection", async () => {
132
+ it("closes automatically on selection", async () => {
136
133
  const { user } = render(
137
134
  <SingleSelectMenu
138
- triggerElement={<MenuToggleButton>Click me</MenuToggleButton>}
135
+ menuToggleElement={<MenuToggleButton>Click me</MenuToggleButton>}
139
136
  >
140
137
  <MenuContent>
141
138
  <MenuGroup title="Menu Title">
142
139
  {menuItems.map(({ id, label }) => (
143
- <MenuItemSelectable key={id} id={id}>
140
+ <MenuItem key={id} id={id}>
144
141
  {label}
145
- </MenuItemSelectable>
142
+ </MenuItem>
146
143
  ))}
147
144
  </MenuGroup>
148
145
  </MenuContent>
@@ -8,20 +8,20 @@ import {
8
8
  export const SingleSelectMenuTypeTest = () => (
9
9
  <>
10
10
  {/* Valid SingleSelectMenu with minimal required props */}
11
- <SingleSelectMenu triggerElement={<>test</>}>Test</SingleSelectMenu>
11
+ <SingleSelectMenu menuToggleElement={<>test</>}>Test</SingleSelectMenu>
12
12
  {/* Valid SingleSelectMenu allows MenuContent by itself as a child */}
13
- <SingleSelectMenu triggerElement={<>test</>}>
13
+ <SingleSelectMenu menuToggleElement={<>test</>}>
14
14
  <MenuContent>Test</MenuContent>
15
15
  </SingleSelectMenu>
16
16
  {/* Valid SingleSelectMenu allows multiple children without fragment */}
17
- <SingleSelectMenu triggerElement={<>test</>}>
17
+ <SingleSelectMenu menuToggleElement={<>test</>}>
18
18
  <MenuHeader>Test</MenuHeader>
19
19
  <MenuContent>Test</MenuContent>
20
20
  <MenuFooter>Test</MenuFooter>
21
21
  </SingleSelectMenu>
22
22
  {/* Valid SingleSelectMenu accepts Downshift props and functions for useSelect */}
23
23
  <SingleSelectMenu
24
- triggerElement={<>test</>}
24
+ menuToggleElement={<>test</>}
25
25
  onSelectedItemChange={() => {}}
26
26
  selectedItem={null}
27
27
  stateReducer={(c) => c}
@@ -32,19 +32,19 @@ export const SingleSelectMenuTypeTest = () => (
32
32
  Test
33
33
  </SingleSelectMenu>
34
34
 
35
- {/* @ts-expect-error - triggerElement is a required prop */}
35
+ {/* @ts-expect-error - menuToggleElement is a required prop */}
36
36
  <SingleSelectMenu>Test</SingleSelectMenu>
37
37
  <SingleSelectMenu
38
- /* @ts-expect-error - triggerElement must be a valid react element */
39
- triggerElement="test"
38
+ /* @ts-expect-error - menuToggleElement must be a valid react element */
39
+ menuToggleElement="test"
40
40
  >
41
41
  Test
42
42
  </SingleSelectMenu>
43
43
  {/* @ts-expect-error - when no children provided */}
44
- <SingleSelectMenu triggerElement="test" />
44
+ <SingleSelectMenu menuToggleElement="test" />
45
45
 
46
46
  <SingleSelectMenu
47
- triggerElement={<>test</>}
47
+ menuToggleElement={<>test</>}
48
48
  /* @ts-expect-error - isOpen can't be a string */
49
49
  isOpen="false"
50
50
  /* @ts-expect-error - onSelectedItemChange can't be a string */
@@ -57,35 +57,35 @@ export const SingleSelectMenuTypeTest = () => (
57
57
  Test
58
58
  </SingleSelectMenu>
59
59
  <SingleSelectMenu
60
- triggerElement={<>test</>}
60
+ menuToggleElement={<>test</>}
61
61
  /* @ts-expect-error - onMultiSelectStateChange can't be used on SingleSelectMenu */
62
62
  onMultiSelectStateChange={() => {}}
63
63
  >
64
64
  Test
65
65
  </SingleSelectMenu>
66
66
  <SingleSelectMenu
67
- triggerElement={<>test</>}
67
+ menuToggleElement={<>test</>}
68
68
  /* @ts-expect-error - selectedItems can't be used on SingleSelectMenu */
69
69
  selectedItems={[]}
70
70
  >
71
71
  Test
72
72
  </SingleSelectMenu>
73
73
  <SingleSelectMenu
74
- triggerElement={<>test</>}
74
+ menuToggleElement={<>test</>}
75
75
  /* @ts-expect-error - multiSelectStateReducer can't be used on SingleSelectMenu */
76
76
  multiSelectStateReducer={(c) => c}
77
77
  >
78
78
  Test
79
79
  </SingleSelectMenu>
80
80
  <SingleSelectMenu
81
- triggerElement={<>test</>}
81
+ menuToggleElement={<>test</>}
82
82
  /* @ts-expect-error - onMultiSelectStateChange can't be used on SingleSelectMenu */
83
83
  onMultiSelectStateChange={() => {}}
84
84
  >
85
85
  Test
86
86
  </SingleSelectMenu>
87
87
  <SingleSelectMenu
88
- triggerElement={<>test</>}
88
+ menuToggleElement={<>test</>}
89
89
  /* @ts-expect-error - getA11yMultiStatusMessage can't be used on SingleSelectMenu */
90
90
  getA11yMultiStatusMessage={() => ""}
91
91
  >
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable testing-library/no-unnecessary-act */
2
+ import { PointerEventsCheckLevel } from "@testing-library/user-event";
2
3
  import {
3
4
  render,
4
5
  screen,
5
6
  waitFor,
6
- act,
7
7
  } from "@sproutsocial/seeds-react-testing-library";
8
8
  import {
9
9
  ActionMenu,
@@ -23,7 +23,7 @@ describe("Menu", () => {
23
23
  it("should render the trigger button", () => {
24
24
  render(
25
25
  <Component
26
- triggerElement={
26
+ menuToggleElement={
27
27
  <MenuToggleButton role="button" aria-label="Open Menu">
28
28
  Open
29
29
  </MenuToggleButton>
@@ -40,7 +40,7 @@ describe("Menu", () => {
40
40
  it("should default to open if initialIsOpen is true", () => {
41
41
  render(
42
42
  <Component
43
- triggerElement={
43
+ menuToggleElement={
44
44
  <MenuToggleButton role="button" aria-label="Open Menu">
45
45
  Open
46
46
  </MenuToggleButton>
@@ -61,7 +61,7 @@ describe("Menu", () => {
61
61
  it("should open when trigger button is clicked", async () => {
62
62
  const { user } = render(
63
63
  <Component
64
- triggerElement={
64
+ menuToggleElement={
65
65
  <MenuToggleButton role="button" aria-label="Open Menu">
66
66
  Open
67
67
  </MenuToggleButton>
@@ -86,7 +86,7 @@ describe("Menu", () => {
86
86
  it("should open when trigger button is focused and enter key pressed", async () => {
87
87
  const { user } = render(
88
88
  <Component
89
- triggerElement={
89
+ menuToggleElement={
90
90
  <MenuToggleButton role="button" aria-label="Open Menu">
91
91
  Open
92
92
  </MenuToggleButton>
@@ -112,7 +112,7 @@ describe("Menu", () => {
112
112
  it("should open when trigger button is focused and space key pressed", async () => {
113
113
  const { user } = render(
114
114
  <Component
115
- triggerElement={
115
+ menuToggleElement={
116
116
  <MenuToggleButton role="button" aria-label="Open Menu">
117
117
  Open
118
118
  </MenuToggleButton>
@@ -138,7 +138,7 @@ describe("Menu", () => {
138
138
  it("should close when trigger button is clicked while open", async () => {
139
139
  const { user } = render(
140
140
  <Component
141
- triggerElement={
141
+ menuToggleElement={
142
142
  <MenuToggleButton role="button" aria-label="Open Menu">
143
143
  Open
144
144
  </MenuToggleButton>
@@ -167,7 +167,7 @@ describe("Menu", () => {
167
167
  const mockOnIsOpenChange = jest.fn();
168
168
  const { user } = render(
169
169
  <Component
170
- triggerElement={
170
+ menuToggleElement={
171
171
  <MenuToggleButton role="button" aria-label="Open Menu">
172
172
  Open
173
173
  </MenuToggleButton>
@@ -199,7 +199,7 @@ describe("Menu", () => {
199
199
  const { user } = render(
200
200
  <div>
201
201
  <Component
202
- triggerElement={
202
+ menuToggleElement={
203
203
  <MenuToggleButton role="button" aria-label="Open Menu">
204
204
  Open
205
205
  </MenuToggleButton>
@@ -230,7 +230,7 @@ describe("Menu", () => {
230
230
  const mockOnSelectedItemChange = jest.fn();
231
231
  const { user } = render(
232
232
  <Component
233
- triggerElement={
233
+ menuToggleElement={
234
234
  <MenuToggleButton role="button" aria-label="Open Menu">
235
235
  Open
236
236
  </MenuToggleButton>
@@ -252,7 +252,11 @@ describe("Menu", () => {
252
252
  const menuItem = await screen.findByText("Item 1");
253
253
 
254
254
  // Use click to activate menu item
255
- await user.click(menuItem);
255
+ await user
256
+ .setup({
257
+ pointerEventsCheck: PointerEventsCheckLevel.Never,
258
+ })
259
+ .click(menuItem);
256
260
 
257
261
  // Check that onSelectedItemChange is called
258
262
  await waitFor(() => expect(mockOnSelectedItemChange).toHaveBeenCalled());
@@ -262,7 +266,7 @@ describe("Menu", () => {
262
266
  const mockOnSelectedItemChange = jest.fn();
263
267
  const { user } = render(
264
268
  <Component
265
- triggerElement={
269
+ menuToggleElement={
266
270
  <MenuToggleButton role="button" aria-label="Open Menu">
267
271
  Open
268
272
  </MenuToggleButton>
@@ -294,7 +298,7 @@ describe("Menu", () => {
294
298
  const mockOnSelectedItemChange = jest.fn();
295
299
  const { user } = render(
296
300
  <Component
297
- triggerElement={
301
+ menuToggleElement={
298
302
  <MenuToggleButton role="button" aria-label="Open Menu">
299
303
  Open
300
304
  </MenuToggleButton>
@@ -326,7 +330,7 @@ describe("Menu", () => {
326
330
  const mockOnIsOpenChange = jest.fn();
327
331
  const { user } = render(
328
332
  <Component
329
- triggerElement={
333
+ menuToggleElement={
330
334
  <MenuToggleButton role="button" aria-label="Open Menu">
331
335
  Open
332
336
  </MenuToggleButton>
@@ -358,7 +362,7 @@ describe("Menu", () => {
358
362
  const mockOnHighlightedIndexChange = jest.fn();
359
363
  const { user } = render(
360
364
  <Component
361
- triggerElement={
365
+ menuToggleElement={
362
366
  <MenuToggleButton role="button" aria-label="Open Menu">
363
367
  Open
364
368
  </MenuToggleButton>
@@ -392,7 +396,7 @@ describe("Menu", () => {
392
396
  const mockStateReducer = jest.fn((state, { changes }) => changes);
393
397
  const { user } = render(
394
398
  <Component
395
- triggerElement={
399
+ menuToggleElement={
396
400
  <MenuToggleButton role="button" aria-label="Open Menu">
397
401
  Open
398
402
  </MenuToggleButton>
@@ -16,6 +16,7 @@ const walkAllChildren = (
16
16
  // console.log("element", element);
17
17
  callback(element, parents);
18
18
  const newParents = [...parents, element];
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
20
  const children = (element as any).props?.children;
20
21
  React.Children.toArray(children).forEach((child) => {
21
22
  walk(child, newParents);
@@ -42,10 +43,7 @@ const getAllMenuItems = (children: ReactNode) => {
42
43
  const allMenuItems: TypeItemElements[] = [];
43
44
  // console.log("children", children);
44
45
  walkAllChildren(children, (element, parents) => {
45
- if (
46
- checkIfIsElement(element, "MenuItem") ||
47
- checkIfIsElement(element, "MenuItemSelectable")
48
- ) {
46
+ if (checkIfIsElement(element, "MenuItem")) {
49
47
  allMenuItems.push({
50
48
  element: element as TypeItemElements["element"],
51
49
  parents,
package/src/index.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  // Primitives
2
2
  export * from "./MenuItem";
3
- export * from "./MenuItemSelectable";
4
3
  export * from "./MenuHeader";
5
4
  export * from "./MenuContent";
6
5
  export * from "./MenuFooter";
@@ -35,14 +35,17 @@ export const testDefaultContext = (
35
35
  */
36
36
  export const TestWithMenuRoot = ({
37
37
  children,
38
- triggerElement,
38
+ menuToggleElement,
39
39
  ...props
40
40
  }: {
41
41
  children: TypeMenuRootProps["children"];
42
- triggerElement: TypeMenuRootProps["triggerElement"];
43
- } & Partial<Omit<TypeMenuRootProps, "children" | "triggerElement">>) => {
42
+ menuToggleElement: TypeMenuRootProps["menuToggleElement"];
43
+ } & Partial<Omit<TypeMenuRootProps, "children" | "menuToggleElement">>) => {
44
44
  return (
45
- <MenuRoot triggerElement={triggerElement} {...testDefaultContext(props)}>
45
+ <MenuRoot
46
+ menuToggleElement={menuToggleElement}
47
+ {...testDefaultContext(props)}
48
+ >
46
49
  {children}
47
50
  </MenuRoot>
48
51
  );
package/tsconfig.json CHANGED
@@ -8,5 +8,5 @@
8
8
  "verbatimModuleSyntax": true
9
9
  },
10
10
  "include": ["src/**/*"],
11
- "exclude": ["node_modules", "dist"]
11
+ "exclude": ["node_modules", "dist", "coverage"]
12
12
  }
@@ -1,99 +0,0 @@
1
- Feature: MenuItemSelectable
2
-
3
- A selectable item designed to be included within a Menu component, providing different input types
4
-
5
- Rule: User Behavior
6
-
7
- Background:
8
- Given an end user is interacting with the component
9
-
10
- Scenario Outline: MenuItemSelectable can be checked
11
- Given the MenuItemSelectable is in the unchecked state
12
- And the MenuItemSelectable is focused
13
- And the MenuItemSelectable is not disabled
14
- When the MenuItemSelectable is triggered via <interaction>
15
- Then the MenuItemSelectable should be checked
16
-
17
- Examples: Interactions
18
- | interaction |
19
- | clicking with mouse |
20
- | pressing the Enter key |
21
- | pressing the Space key |
22
-
23
- Scenario Outline: MenuItemSelectable can be unchecked
24
- Given the MenuItemSelectable is in the checked state
25
- And the MenuItemSelectable is focused
26
- And the MenuItemSelectable is not disabled
27
- When the MenuItemSelectable is triggered via <interaction>
28
- Then the MenuItemSelectable should be unchecked
29
-
30
- Examples: Interactions
31
- | interaction |
32
- | clicking with mouse |
33
- | pressing the Enter key |
34
- | pressing the Space key |
35
-
36
- Scenario Outline: MenuItemSelectable is disabled
37
- Given the MenuItemSelectable is disabled
38
- And the MenuItemSelectable is focused
39
- When the MenuItemSelectable is triggered via <interaction>
40
- Then no events should fire
41
-
42
- Examples: Interactions
43
- | interaction |
44
- | clicking with mouse |
45
- | pressing the Enter key |
46
- | pressing the Space key |
47
-
48
- Rule: API
49
- Background:
50
- Given an engineer is developing using the component
51
-
52
- Scenario: MenuItemSelectable accepts children
53
- When <child component(s)> are provided
54
- Then the MenuItemSelectable should render the <component(s)>
55
-
56
- Examples: child components
57
- | child component(s) | component(s) |
58
- | a Link is | Link |
59
- | a Text is | Text |
60
- | a Icon is | Icon |
61
- | a Text then Icon are | Text and Icon |
62
- | a Icon and Text are | Icon and Text |
63
-
64
- Scenario Outline: MenuItemSelectable supports different input types
65
- When an <inputTypeProp> is passed to the MenuItemSelectable component
66
- Then the MenuItemSelectable renders with the appropriate <component> type
67
-
68
- Examples: Input Types
69
- | inputTypeProp | component |
70
- | checkbox | Checkbox |
71
- | radio | Radio |
72
- | switch | Switch |
73
-
74
- Scenario: MenuItemSelectable defaults to an icon input type
75
- When the MenuItemSelectable is implemented without an inputType prop specified
76
- Then the MenuItemSelectable defaults to an icon input type
77
-
78
- Scenario: MenuItemSelectable checked state can be enabled via a prop
79
- When the selected prop is set to true
80
- Then the MenuItemSelectable should appear in the checked state
81
-
82
- Scenario Outline: MenuItemSelectable validates prop types
83
- When any <propName> is passed to the MenuItemSelectable
84
- Then the MenuItemSelectable should check that each <propName> is of the expected <propType>
85
-
86
- Examples: Prop Types
87
- | propName | propType |
88
- | children | ReactNode |
89
- | disabled | boolean |
90
- | elevation | low, medium, or high |
91
- | href | string |
92
- | onClick | React.MouseEventHandler |
93
- | role | string |
94
- | selected | boolean |
95
- | inputType | checkbox, radio, or switch |
96
-
97
- Scenario: MenuItemSelectable extends MenuItem
98
- When MenuItemSelectable features are used
99
- Then the MenuItemSelectable responds as a MenuItem would
@@ -1,15 +0,0 @@
1
- import type { TypeMenuItemProps } from "../MenuItem";
2
-
3
- export const INPUT_TYPES = {
4
- CHECKBOX: "checkbox",
5
- RADIO: "radio",
6
- SWITCH: "switch",
7
- ICON: "icon",
8
- } as const;
9
- export type InputType = (typeof INPUT_TYPES)[keyof typeof INPUT_TYPES];
10
-
11
- export interface TypeMenuItemSelectableProps extends TypeMenuItemProps {
12
- active?: boolean;
13
- inputType?: InputType;
14
- inputLabel?: string;
15
- }