@dxos/react-ui-menu 0.8.3 → 0.8.4-main.05e74ebcff

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 (70) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/browser/index.mjs +575 -371
  3. package/dist/lib/browser/index.mjs.map +4 -4
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/translations.mjs +14 -0
  6. package/dist/lib/browser/translations.mjs.map +7 -0
  7. package/dist/lib/node-esm/index.mjs +575 -371
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/lib/node-esm/translations.mjs +16 -0
  11. package/dist/lib/node-esm/translations.mjs.map +7 -0
  12. package/dist/types/src/builder.d.ts +39 -0
  13. package/dist/types/src/builder.d.ts.map +1 -0
  14. package/dist/types/src/builder.test.d.ts +2 -0
  15. package/dist/types/src/builder.test.d.ts.map +1 -0
  16. package/dist/types/src/components/ActionLabel.d.ts +3 -3
  17. package/dist/types/src/components/ActionLabel.d.ts.map +1 -1
  18. package/dist/types/src/components/DropdownMenu.d.ts +4 -2
  19. package/dist/types/src/components/DropdownMenu.d.ts.map +1 -1
  20. package/dist/types/src/components/Menu.d.ts +50 -0
  21. package/dist/types/src/components/Menu.d.ts.map +1 -0
  22. package/dist/types/src/components/Menu.stories.d.ts +21 -0
  23. package/dist/types/src/components/Menu.stories.d.ts.map +1 -0
  24. package/dist/types/src/components/Menu.test.d.ts +2 -0
  25. package/dist/types/src/components/Menu.test.d.ts.map +1 -0
  26. package/dist/types/src/components/ToolbarMenu.d.ts +7 -6
  27. package/dist/types/src/components/ToolbarMenu.d.ts.map +1 -1
  28. package/dist/types/src/components/ToolbarMenu.stories.d.ts +34 -0
  29. package/dist/types/src/components/ToolbarMenu.stories.d.ts.map +1 -0
  30. package/dist/types/src/components/index.d.ts +1 -3
  31. package/dist/types/src/components/index.d.ts.map +1 -1
  32. package/dist/types/src/hooks/useMenuActions.d.ts +16 -7
  33. package/dist/types/src/hooks/useMenuActions.d.ts.map +1 -1
  34. package/dist/types/src/index.d.ts +1 -1
  35. package/dist/types/src/index.d.ts.map +1 -1
  36. package/dist/types/src/testing/generator.d.ts +20 -14
  37. package/dist/types/src/testing/generator.d.ts.map +1 -1
  38. package/dist/types/src/translations.d.ts +3 -4
  39. package/dist/types/src/translations.d.ts.map +1 -1
  40. package/dist/types/src/types.d.ts +38 -27
  41. package/dist/types/src/types.d.ts.map +1 -1
  42. package/dist/types/src/util.d.ts +14 -5
  43. package/dist/types/src/util.d.ts.map +1 -1
  44. package/dist/types/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +46 -32
  46. package/src/builder.test.ts +224 -0
  47. package/src/builder.ts +112 -0
  48. package/src/components/ActionLabel.tsx +9 -9
  49. package/src/components/DropdownMenu.tsx +17 -8
  50. package/src/components/Menu.stories.tsx +266 -0
  51. package/src/components/Menu.test.tsx +447 -0
  52. package/src/components/Menu.tsx +348 -0
  53. package/src/components/ToolbarMenu.stories.tsx +95 -0
  54. package/src/components/ToolbarMenu.tsx +169 -101
  55. package/src/components/index.ts +1 -3
  56. package/src/hooks/useMenuActions.ts +42 -53
  57. package/src/index.ts +1 -2
  58. package/src/testing/generator.ts +74 -64
  59. package/src/translations.ts +5 -3
  60. package/src/types.ts +39 -27
  61. package/src/util.ts +34 -15
  62. package/dist/lib/node/index.cjs +0 -506
  63. package/dist/lib/node/index.cjs.map +0 -7
  64. package/dist/lib/node/meta.json +0 -1
  65. package/dist/types/src/components/MenuContext.d.ts +0 -13
  66. package/dist/types/src/components/MenuContext.d.ts.map +0 -1
  67. package/dist/types/src/components/Menus.stories.d.ts +0 -25
  68. package/dist/types/src/components/Menus.stories.d.ts.map +0 -1
  69. package/src/components/MenuContext.tsx +0 -50
  70. package/src/components/Menus.stories.tsx +0 -67
@@ -1,50 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createContextScope, type Scope } from '@radix-ui/react-context';
6
- import React, { type PropsWithChildren, useMemo } from 'react';
7
-
8
- import { type MenuContextValue, type MenuItem, type MenuItemGroup } from '../types';
9
-
10
- export type MenuScopedProps<P> = P & { __menuScope?: Scope };
11
-
12
- const MENU_NAME = 'GraphMenu';
13
-
14
- const [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, []);
15
-
16
- const [MenuContextProvider, useMenu] = createMenuContext<MenuContextValue>(MENU_NAME);
17
-
18
- export const menuContextDefaults: MenuContextValue = {
19
- iconSize: 5,
20
- useGroupItems: () => null,
21
- };
22
-
23
- const useMenuScope = createMenuScope();
24
-
25
- const MenuProvider = ({
26
- children,
27
- useGroupItems = menuContextDefaults.useGroupItems,
28
- iconSize = menuContextDefaults.iconSize,
29
- attendableId,
30
- }: PropsWithChildren<Partial<MenuContextValue>>) => {
31
- const { scope } = useMenuScope(undefined);
32
- return (
33
- <MenuContextProvider useGroupItems={useGroupItems} iconSize={iconSize} attendableId={attendableId} scope={scope}>
34
- {children}
35
- </MenuContextProvider>
36
- );
37
- };
38
-
39
- export const useMenuItems = (
40
- group?: MenuItemGroup,
41
- propsItems?: MenuItem[],
42
- consumerName: string = 'useMenuItemConsumer',
43
- __menuScope?: Scope,
44
- ) => {
45
- const { useGroupItems } = useMenu(consumerName, __menuScope);
46
- const groupItems = useGroupItems(group);
47
- return useMemo(() => propsItems ?? groupItems ?? undefined, [propsItems, groupItems]);
48
- };
49
-
50
- export { useMenu, createMenuScope, MenuProvider };
@@ -1,67 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
- import React, { useCallback, useMemo } from 'react';
7
-
8
- import { faker } from '@dxos/random';
9
- import { IconButton } from '@dxos/react-ui';
10
- import { withLayout, withSignals, withTheme } from '@dxos/storybook-utils';
11
-
12
- import { DropdownMenu as NaturalDropdownMenu, ToolbarMenu, MenuProvider } from '../components';
13
- import { useMenuActions } from '../hooks';
14
- import { createActions, createNestedActions, createNestedActionsResolver, useMutateActions } from '../testing';
15
- import translations from '../translations';
16
- import { type MenuAction } from '../types';
17
-
18
- faker.seed(1234);
19
-
20
- export default {
21
- title: 'ui/react-ui-menu/Menus',
22
- component: ToolbarMenu,
23
- decorators: [withTheme, withLayout(), withSignals],
24
- parameters: { translations },
25
- };
26
-
27
- export const DropdownMenu = {
28
- render: () => {
29
- const menuActions = useMemo(() => createActions() as MenuAction[], []);
30
- const resolveGroupItems = useCallback(() => menuActions, [menuActions]);
31
- useMutateActions(menuActions);
32
-
33
- return (
34
- <MenuProvider useGroupItems={resolveGroupItems}>
35
- <NaturalDropdownMenu.Root>
36
- <NaturalDropdownMenu.Trigger asChild>
37
- <IconButton icon='ph--list-checks--regular' size={5} label='Options' />
38
- </NaturalDropdownMenu.Trigger>
39
- </NaturalDropdownMenu.Root>
40
- </MenuProvider>
41
- );
42
- },
43
- };
44
-
45
- export const Toolbar = {
46
- render: () => {
47
- const nestedMenuActions = useMemo(() => createNestedActionsResolver(), []);
48
-
49
- return (
50
- <MenuProvider {...nestedMenuActions}>
51
- <ToolbarMenu />
52
- </MenuProvider>
53
- );
54
- },
55
- };
56
-
57
- export const UseMenuActionsToolbar = {
58
- render: () => {
59
- const menu = useMenuActions(createNestedActions);
60
-
61
- return (
62
- <MenuProvider {...menu}>
63
- <ToolbarMenu />
64
- </MenuProvider>
65
- );
66
- },
67
- };