@xyo-network/react-appbar 2.25.39 → 2.25.42

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 (49) hide show
  1. package/dist/cjs/components/{Toolbar/System/SiteMenu.d.ts → SiteMenu/Menu.d.ts} +1 -8
  2. package/dist/cjs/components/SiteMenu/Menu.js +20 -0
  3. package/dist/cjs/components/SiteMenu/Menu.js.map +1 -0
  4. package/dist/cjs/components/SiteMenu/MenuItems.d.ts +11 -0
  5. package/dist/cjs/components/SiteMenu/MenuItems.js +13 -0
  6. package/dist/cjs/components/SiteMenu/MenuItems.js.map +1 -0
  7. package/dist/cjs/components/SiteMenu/index.d.ts +2 -0
  8. package/dist/cjs/components/SiteMenu/index.js +6 -0
  9. package/dist/cjs/components/SiteMenu/index.js.map +1 -0
  10. package/dist/cjs/components/Toolbar/System/SystemToolbar.d.ts +2 -3
  11. package/dist/cjs/components/Toolbar/System/SystemToolbar.js +3 -3
  12. package/dist/cjs/components/Toolbar/System/SystemToolbar.js.map +1 -1
  13. package/dist/cjs/components/Toolbar/System/index.d.ts +0 -1
  14. package/dist/cjs/components/Toolbar/System/index.js +0 -1
  15. package/dist/cjs/components/Toolbar/System/index.js.map +1 -1
  16. package/dist/cjs/components/index.d.ts +1 -0
  17. package/dist/cjs/components/index.js +1 -0
  18. package/dist/cjs/components/index.js.map +1 -1
  19. package/dist/docs.json +12132 -2252
  20. package/dist/esm/components/{Toolbar/System/SiteMenu.d.ts → SiteMenu/Menu.d.ts} +1 -8
  21. package/dist/esm/components/SiteMenu/Menu.js +14 -0
  22. package/dist/esm/components/SiteMenu/Menu.js.map +1 -0
  23. package/dist/esm/components/SiteMenu/MenuItems.d.ts +11 -0
  24. package/dist/esm/components/SiteMenu/MenuItems.js +7 -0
  25. package/dist/esm/components/SiteMenu/MenuItems.js.map +1 -0
  26. package/dist/esm/components/SiteMenu/index.d.ts +2 -0
  27. package/dist/esm/components/SiteMenu/index.js +3 -0
  28. package/dist/esm/components/SiteMenu/index.js.map +1 -0
  29. package/dist/esm/components/Toolbar/System/SystemToolbar.d.ts +2 -3
  30. package/dist/esm/components/Toolbar/System/SystemToolbar.js +3 -3
  31. package/dist/esm/components/Toolbar/System/SystemToolbar.js.map +1 -1
  32. package/dist/esm/components/Toolbar/System/index.d.ts +0 -1
  33. package/dist/esm/components/Toolbar/System/index.js +0 -1
  34. package/dist/esm/components/Toolbar/System/index.js.map +1 -1
  35. package/dist/esm/components/index.d.ts +1 -0
  36. package/dist/esm/components/index.js +1 -0
  37. package/dist/esm/components/index.js.map +1 -1
  38. package/package.json +14 -14
  39. package/src/components/SiteMenu/Menu.tsx +39 -0
  40. package/src/components/SiteMenu/MenuItems.tsx +22 -0
  41. package/src/components/SiteMenu/index.ts +2 -0
  42. package/src/components/Toolbar/System/SystemToolbar.tsx +5 -4
  43. package/src/components/Toolbar/System/index.ts +0 -1
  44. package/src/components/index.ts +1 -0
  45. package/dist/cjs/components/Toolbar/System/SiteMenu.js +0 -41
  46. package/dist/cjs/components/Toolbar/System/SiteMenu.js.map +0 -1
  47. package/dist/esm/components/Toolbar/System/SiteMenu.js +0 -35
  48. package/dist/esm/components/Toolbar/System/SiteMenu.js.map +0 -1
  49. package/src/components/Toolbar/System/SiteMenu.tsx +0 -77
@@ -1,14 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { FlexBoxProps } from '@xylabs/sdk-react';
3
- import { To } from 'react-router-dom';
4
- export interface SiteMenuItem {
5
- name: string;
6
- to?: To;
7
- href?: string;
8
- onClick?: () => void;
9
- }
10
3
  export interface SiteMenuProps extends FlexBoxProps {
11
4
  hideSettingsMenuItem?: boolean;
12
- menuItems?: SiteMenuItem[];
5
+ side?: 'left' | 'right' | 'top' | 'bottom';
13
6
  }
14
7
  export declare const SiteMenu: React.FC<SiteMenuProps>;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import MenuIcon from '@mui/icons-material/Menu';
3
+ import SettingsIcon from '@mui/icons-material/Settings';
4
+ import { Box, IconButton, List, SwipeableDrawer } from '@mui/material';
5
+ import { FlexRow } from '@xylabs/sdk-react';
6
+ import { useState } from 'react';
7
+ import { DrawerListItem } from './MenuItems';
8
+ export const SiteMenu = ({ side = 'right', children, ...props }) => {
9
+ const [open, setOpen] = useState(false);
10
+ return (_jsxs(FlexRow, { alignItems: "stretch", ...props, children: [_jsx(IconButton, { size: "small", color: "inherit", onClick: () => {
11
+ setOpen(!open);
12
+ }, children: _jsx(MenuIcon, { fontSize: "large" }) }), _jsx(SwipeableDrawer, { anchor: side, open: open, onClose: () => setOpen(false), onOpen: () => setOpen(true), children: _jsx(Box, { width: "auto", role: "presentation", onClick: () => setOpen(false), onKeyDown: () => setOpen(false), children: children ?? (_jsx(List, { children: _jsx(DrawerListItem, { primary: "Settings", icon: _jsx(SettingsIcon, {}), to: "/settings" }) })) }) })] }));
13
+ };
14
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/components/SiteMenu/Menu.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,0BAA0B,CAAA;AAC/C,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAgB,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAO5C,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1F,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEvC,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aACrC,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;gBAChB,CAAC,YAED,KAAC,QAAQ,IAAC,QAAQ,EAAC,OAAO,GAAG,GAClB,EACb,KAAC,eAAe,IAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YACnG,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YACjG,QAAQ,IAAI,CACX,KAAC,IAAI,cACH,KAAC,cAAc,IAAC,OAAO,EAAC,UAAU,EAAC,IAAI,EAAE,KAAC,YAAY,KAAG,EAAE,EAAE,EAAC,WAAW,GAAG,GACvE,CACR,GACG,GACU,IACV,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { ListItemProps, ListItemTextProps } from '@mui/material';
2
+ import { ListItemButtonExProps } from '@xyo-network/react-shared';
3
+ import { ReactNode } from 'react';
4
+ import { To } from 'react-router-dom';
5
+ export interface DrawerListItemProps extends ListItemProps {
6
+ primary: ListItemTextProps['primary'];
7
+ to?: To;
8
+ icon?: ReactNode;
9
+ onButtonClick?: ListItemButtonExProps['onClick'];
10
+ }
11
+ export declare const DrawerListItem: React.FC<DrawerListItemProps>;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ListItem, ListItemIcon, ListItemText } from '@mui/material';
3
+ import { ListItemButtonEx } from '@xyo-network/react-shared';
4
+ export const DrawerListItem = ({ primary, to, icon, onButtonClick, ...props }) => {
5
+ return (_jsx(ListItem, { ...props, children: _jsxs(ListItemButtonEx, { to: to, onClick: onButtonClick, children: [_jsx(ListItemIcon, { children: icon }), _jsx(ListItemText, { primary: primary })] }) }));
6
+ };
7
+ //# sourceMappingURL=MenuItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuItems.js","sourceRoot":"","sources":["../../../../src/components/SiteMenu/MenuItems.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAiB,YAAY,EAAqB,MAAM,eAAe,CAAA;AACtG,OAAO,EAAE,gBAAgB,EAAyB,MAAM,2BAA2B,CAAA;AAWnF,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9G,OAAO,CACL,KAAC,QAAQ,OAAK,KAAK,YACjB,MAAC,gBAAgB,IAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,aAC9C,KAAC,YAAY,cAAE,IAAI,GAAgB,EACnC,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,IACjB,GACV,CACZ,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './Menu';
2
+ export * from './MenuItems';
@@ -0,0 +1,3 @@
1
+ export * from './Menu';
2
+ export * from './MenuItems';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/SiteMenu/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA"}
@@ -1,14 +1,13 @@
1
- /// <reference types="react" />
2
1
  import { ToolbarProps } from '@mui/material';
3
2
  import { SelectExProps } from '@xylabs/sdk-react';
4
3
  import { NetworkSelectExProps } from '@xyo-network/react-network';
5
- import { SiteMenuProps } from './SiteMenu';
4
+ import { ReactNode } from 'react';
6
5
  export interface SystemToolbarProps extends ToolbarProps {
7
6
  networkSelectProps?: NetworkSelectExProps;
8
7
  archiveSelectProps?: SelectExProps<string>;
9
8
  hideNetworkSelect?: boolean;
10
9
  hideArchiveSelect?: boolean;
11
- siteMenuProps?: SiteMenuProps;
10
+ menu?: ReactNode;
12
11
  darkModeButton?: boolean;
13
12
  authButton?: boolean;
14
13
  noMenu?: boolean;
@@ -5,8 +5,8 @@ import { ArchiveSelectEx } from '@xyo-network/react-archive';
5
5
  import { AuthStatusIconButton } from '@xyo-network/react-auth';
6
6
  import { NetworkSelectEx } from '@xyo-network/react-network';
7
7
  import { DarkModeIconButton } from '@xyo-network/react-shared';
8
- import { SiteMenu } from './SiteMenu';
9
- export const SystemToolbar = ({ children, networkSelectProps, archiveSelectProps, hideNetworkSelect, hideArchiveSelect, siteMenuProps, darkModeButton = false, authButton = false, noMenu = false, ...props }) => {
10
- return (_jsxs(Toolbar, { ...props, children: [hideNetworkSelect ? null : (_jsx(FlexRow, { marginX: 0.5, maxWidth: 120, children: _jsx(Paper, { variant: "elevation", children: _jsx(NetworkSelectEx, { fullWidth: true, ...networkSelectProps }) }) })), hideArchiveSelect ? null : (_jsx(FlexRow, { marginX: 0.5, maxWidth: 120, children: _jsx(Paper, { variant: "elevation", children: _jsx(ArchiveSelectEx, { fullWidth: true, ...archiveSelectProps }) }) })), children, authButton ? _jsx(AuthStatusIconButton, { color: "inherit" }) : null, darkModeButton ? _jsx(DarkModeIconButton, { color: "inherit" }) : null, noMenu ? null : _jsx(SiteMenu, { ...siteMenuProps })] }));
8
+ import { SiteMenu } from '../../SiteMenu';
9
+ export const SystemToolbar = ({ children, networkSelectProps, archiveSelectProps, hideNetworkSelect, hideArchiveSelect, menu, darkModeButton = false, authButton = false, noMenu = false, ...props }) => {
10
+ return (_jsxs(Toolbar, { ...props, children: [hideNetworkSelect ? null : (_jsx(FlexRow, { marginX: 0.5, maxWidth: 120, children: _jsx(Paper, { variant: "elevation", children: _jsx(NetworkSelectEx, { fullWidth: true, ...networkSelectProps }) }) })), hideArchiveSelect ? null : (_jsx(FlexRow, { marginX: 0.5, maxWidth: 120, children: _jsx(Paper, { variant: "elevation", children: _jsx(ArchiveSelectEx, { fullWidth: true, ...archiveSelectProps }) }) })), children, authButton ? _jsx(AuthStatusIconButton, { color: "inherit" }) : null, darkModeButton ? _jsx(DarkModeIconButton, { color: "inherit" }) : null, noMenu ? null : _jsx(SiteMenu, { children: menu })] }));
11
11
  };
12
12
  //# sourceMappingURL=SystemToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SystemToolbar.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/SystemToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAwB,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAA;AAapD,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,GAAG,KAAK,EACtB,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,KAAK,EACd,GAAG,KAAK,EACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,OAAO,OAAK,KAAK,aACf,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,KAAC,OAAO,IAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAClC,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,YACxB,KAAC,eAAe,IAAC,SAAS,WAAK,kBAAkB,GAAI,GAC/C,GACA,CACX,EACA,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,KAAC,OAAO,IAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAClC,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,YACxB,KAAC,eAAe,IAAC,SAAS,WAAK,kBAAkB,GAAI,GAC/C,GACA,CACX,EACA,QAAQ,EACR,UAAU,CAAC,CAAC,CAAC,KAAC,oBAAoB,IAAC,KAAK,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAC5D,cAAc,CAAC,CAAC,CAAC,KAAC,kBAAkB,IAAC,KAAK,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAC9D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,OAAK,aAAa,GAAI,IACxC,CACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"SystemToolbar.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/SystemToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAwB,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAazC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,IAAI,EACJ,cAAc,GAAG,KAAK,EACtB,UAAU,GAAG,KAAK,EAClB,MAAM,GAAG,KAAK,EACd,GAAG,KAAK,EACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,OAAO,OAAK,KAAK,aACf,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,KAAC,OAAO,IAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAClC,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,YACxB,KAAC,eAAe,IAAC,SAAS,WAAK,kBAAkB,GAAI,GAC/C,GACA,CACX,EACA,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,KAAC,OAAO,IAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAClC,KAAC,KAAK,IAAC,OAAO,EAAC,WAAW,YACxB,KAAC,eAAe,IAAC,SAAS,WAAK,kBAAkB,GAAI,GAC/C,GACA,CACX,EACA,QAAQ,EACR,UAAU,CAAC,CAAC,CAAC,KAAC,oBAAoB,IAAC,KAAK,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAC5D,cAAc,CAAC,CAAC,CAAC,KAAC,kBAAkB,IAAC,KAAK,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAC9D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,cAAE,IAAI,GAAY,IACpC,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -1,2 +1 @@
1
- export * from './SiteMenu';
2
1
  export * from './SystemToolbar';
@@ -1,3 +1,2 @@
1
- export * from './SiteMenu';
2
1
  export * from './SystemToolbar';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './AppBar';
2
2
  export * from './MobileSystemControls';
3
3
  export * from './SearchBar';
4
+ export * from './SiteMenu';
4
5
  export * from './Toolbar';
@@ -1,5 +1,6 @@
1
1
  export * from './AppBar';
2
2
  export * from './MobileSystemControls';
3
3
  export * from './SearchBar';
4
+ export * from './SiteMenu';
4
5
  export * from './Toolbar';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
package/package.json CHANGED
@@ -15,13 +15,13 @@
15
15
  "@mui/icons-material": "^5.8.3",
16
16
  "@mui/material": "^5.8.3",
17
17
  "@xylabs/sdk-react": "^2.13.7",
18
- "@xyo-network/core": "^2.20.43",
19
- "@xyo-network/react-archive": "^2.25.39",
20
- "@xyo-network/react-archivist-api": "^2.25.39",
21
- "@xyo-network/react-auth": "^2.25.39",
22
- "@xyo-network/react-network": "^2.25.39",
23
- "@xyo-network/react-shared": "^2.25.39",
24
- "@xyo-network/react-theme": "^2.25.39",
18
+ "@xyo-network/core": "^2.20.44",
19
+ "@xyo-network/react-archive": "^2.25.42",
20
+ "@xyo-network/react-archivist-api": "^2.25.42",
21
+ "@xyo-network/react-auth": "^2.25.42",
22
+ "@xyo-network/react-network": "^2.25.42",
23
+ "@xyo-network/react-shared": "^2.25.42",
24
+ "@xyo-network/react-theme": "^2.25.42",
25
25
  "lodash": "^4.17.21",
26
26
  "react": "^18.1.0",
27
27
  "react-dom": "^18.1.0",
@@ -33,12 +33,12 @@
33
33
  "devDependencies": {
34
34
  "@babel/core": "^7.18.2",
35
35
  "@babel/preset-env": "^7.18.2",
36
- "@storybook/addons": "^6.5.7",
37
- "@storybook/api": "^6.5.7",
38
- "@storybook/components": "^6.5.7",
39
- "@storybook/core-events": "^6.5.7",
40
- "@storybook/react": "^6.5.7",
41
- "@storybook/theming": "^6.5.7",
36
+ "@storybook/addons": "^6.5.8",
37
+ "@storybook/api": "^6.5.8",
38
+ "@storybook/components": "^6.5.8",
39
+ "@storybook/core-events": "^6.5.8",
40
+ "@storybook/react": "^6.5.8",
41
+ "@storybook/theming": "^6.5.8",
42
42
  "@types/lodash": "^4.14.182",
43
43
  "@xylabs/sdk-react": "^2.13.7",
44
44
  "@xylabs/ts-scripts": "^1.0.66",
@@ -105,6 +105,6 @@
105
105
  },
106
106
  "sideEffects": false,
107
107
  "types": "dist/esm/index.d.ts",
108
- "version": "2.25.39",
108
+ "version": "2.25.42",
109
109
  "packageManager": "yarn@3.1.1"
110
110
  }
@@ -0,0 +1,39 @@
1
+ import MenuIcon from '@mui/icons-material/Menu'
2
+ import SettingsIcon from '@mui/icons-material/Settings'
3
+ import { Box, IconButton, List, SwipeableDrawer } from '@mui/material'
4
+ import { FlexBoxProps, FlexRow } from '@xylabs/sdk-react'
5
+ import { useState } from 'react'
6
+
7
+ import { DrawerListItem } from './MenuItems'
8
+
9
+ export interface SiteMenuProps extends FlexBoxProps {
10
+ hideSettingsMenuItem?: boolean
11
+ side?: 'left' | 'right' | 'top' | 'bottom'
12
+ }
13
+
14
+ export const SiteMenu: React.FC<SiteMenuProps> = ({ side = 'right', children, ...props }) => {
15
+ const [open, setOpen] = useState(false)
16
+
17
+ return (
18
+ <FlexRow alignItems="stretch" {...props}>
19
+ <IconButton
20
+ size="small"
21
+ color="inherit"
22
+ onClick={() => {
23
+ setOpen(!open)
24
+ }}
25
+ >
26
+ <MenuIcon fontSize="large" />
27
+ </IconButton>
28
+ <SwipeableDrawer anchor={side} open={open} onClose={() => setOpen(false)} onOpen={() => setOpen(true)}>
29
+ <Box width="auto" role="presentation" onClick={() => setOpen(false)} onKeyDown={() => setOpen(false)}>
30
+ {children ?? (
31
+ <List>
32
+ <DrawerListItem primary="Settings" icon={<SettingsIcon />} to="/settings" />
33
+ </List>
34
+ )}
35
+ </Box>
36
+ </SwipeableDrawer>
37
+ </FlexRow>
38
+ )
39
+ }
@@ -0,0 +1,22 @@
1
+ import { ListItem, ListItemIcon, ListItemProps, ListItemText, ListItemTextProps } from '@mui/material'
2
+ import { ListItemButtonEx, ListItemButtonExProps } from '@xyo-network/react-shared'
3
+ import { ReactNode } from 'react'
4
+ import { To } from 'react-router-dom'
5
+
6
+ export interface DrawerListItemProps extends ListItemProps {
7
+ primary: ListItemTextProps['primary']
8
+ to?: To
9
+ icon?: ReactNode
10
+ onButtonClick?: ListItemButtonExProps['onClick']
11
+ }
12
+
13
+ export const DrawerListItem: React.FC<DrawerListItemProps> = ({ primary, to, icon, onButtonClick, ...props }) => {
14
+ return (
15
+ <ListItem {...props}>
16
+ <ListItemButtonEx to={to} onClick={onButtonClick}>
17
+ <ListItemIcon>{icon}</ListItemIcon>
18
+ <ListItemText primary={primary} />
19
+ </ListItemButtonEx>
20
+ </ListItem>
21
+ )
22
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Menu'
2
+ export * from './MenuItems'
@@ -4,15 +4,16 @@ import { ArchiveSelectEx } from '@xyo-network/react-archive'
4
4
  import { AuthStatusIconButton } from '@xyo-network/react-auth'
5
5
  import { NetworkSelectEx, NetworkSelectExProps } from '@xyo-network/react-network'
6
6
  import { DarkModeIconButton } from '@xyo-network/react-shared'
7
+ import { ReactNode } from 'react'
7
8
 
8
- import { SiteMenu, SiteMenuProps } from './SiteMenu'
9
+ import { SiteMenu } from '../../SiteMenu'
9
10
 
10
11
  export interface SystemToolbarProps extends ToolbarProps {
11
12
  networkSelectProps?: NetworkSelectExProps
12
13
  archiveSelectProps?: SelectExProps<string>
13
14
  hideNetworkSelect?: boolean
14
15
  hideArchiveSelect?: boolean
15
- siteMenuProps?: SiteMenuProps
16
+ menu?: ReactNode
16
17
  darkModeButton?: boolean
17
18
  authButton?: boolean
18
19
  noMenu?: boolean
@@ -24,7 +25,7 @@ export const SystemToolbar: React.FC<SystemToolbarProps> = ({
24
25
  archiveSelectProps,
25
26
  hideNetworkSelect,
26
27
  hideArchiveSelect,
27
- siteMenuProps,
28
+ menu,
28
29
  darkModeButton = false,
29
30
  authButton = false,
30
31
  noMenu = false,
@@ -49,7 +50,7 @@ export const SystemToolbar: React.FC<SystemToolbarProps> = ({
49
50
  {children}
50
51
  {authButton ? <AuthStatusIconButton color="inherit" /> : null}
51
52
  {darkModeButton ? <DarkModeIconButton color="inherit" /> : null}
52
- {noMenu ? null : <SiteMenu {...siteMenuProps} />}
53
+ {noMenu ? null : <SiteMenu>{menu}</SiteMenu>}
53
54
  </Toolbar>
54
55
  )
55
56
  }
@@ -1,2 +1 @@
1
- export * from './SiteMenu'
2
1
  export * from './SystemToolbar'
@@ -1,4 +1,5 @@
1
1
  export * from './AppBar'
2
2
  export * from './MobileSystemControls'
3
3
  export * from './SearchBar'
4
+ export * from './SiteMenu'
4
5
  export * from './Toolbar'
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SiteMenu = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const icons_material_1 = require("@mui/icons-material");
7
- const material_1 = require("@mui/material");
8
- const sdk_react_1 = require("@xylabs/sdk-react");
9
- const react_1 = require("react");
10
- const react_router_dom_1 = require("react-router-dom");
11
- const SiteMenu = (_a) => {
12
- var { hideSettingsMenuItem, menuItems } = _a, props = tslib_1.__rest(_a, ["hideSettingsMenuItem", "menuItems"]);
13
- const [menuElement, setMenuElement] = (0, react_1.useState)(null);
14
- const open = Boolean(menuElement);
15
- const navigate = (0, react_router_dom_1.useNavigate)();
16
- const handleMenuClose = () => {
17
- setMenuElement(null);
18
- };
19
- const ref = (0, react_1.useRef)(null);
20
- return ((0, jsx_runtime_1.jsxs)(sdk_react_1.FlexRow, Object.assign({ alignItems: "stretch" }, props, { children: [(0, jsx_runtime_1.jsx)(sdk_react_1.LinkEx, Object.assign({ color: "inherit", onClick: () => {
21
- setMenuElement(ref.current);
22
- } }, { children: (0, jsx_runtime_1.jsx)("div", Object.assign({ style: { alignItems: 'center', cursor: 'pointer', display: 'flex' }, ref: ref }, { children: (0, jsx_runtime_1.jsx)(icons_material_1.Menu, { fontSize: "large" }) })) })), (0, jsx_runtime_1.jsxs)(material_1.Menu, Object.assign({ anchorEl: menuElement, open: open, onClose: handleMenuClose }, { children: [menuItems === null || menuItems === void 0 ? void 0 : menuItems.map(({ name, to, href, onClick }) => {
23
- return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, Object.assign({ onClick: () => {
24
- if (onClick) {
25
- onClick();
26
- }
27
- else if (to) {
28
- navigate(to);
29
- }
30
- else if (href) {
31
- window.open(href);
32
- }
33
- handleMenuClose();
34
- }, disableRipple: true }, { children: name }), name));
35
- }), hideSettingsMenuItem ? null : ((0, jsx_runtime_1.jsx)(material_1.MenuItem, Object.assign({ onClick: () => {
36
- navigate('/settings');
37
- handleMenuClose();
38
- }, disableRipple: true }, { children: "Settings" })))] }))] })));
39
- };
40
- exports.SiteMenu = SiteMenu;
41
- //# sourceMappingURL=SiteMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SiteMenu.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/SiteMenu.tsx"],"names":[],"mappings":";;;;;AAAA,wDAAsD;AACtD,4CAA8C;AAC9C,iDAAiE;AACjE,iCAAwC;AACxC,uDAAkD;AAc3C,MAAM,QAAQ,GAA4B,CAAC,EAA6C,EAAE,EAAE;QAAjD,EAAE,oBAAoB,EAAE,SAAS,OAAY,EAAP,KAAK,sBAA3C,qCAA6C,CAAF;IAC3F,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAA2B,IAAI,CAAC,CAAA;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAE9B,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,cAAc,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAA;IAExB,OAAO,CACL,wBAAC,mBAAO,kBAAC,UAAU,EAAC,SAAS,IAAK,KAAK,eACrC,uBAAC,kBAAM,kBACL,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAC7B,CAAC,gBAED,8CAAK,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,gBAChF,uBAAC,qBAAQ,IAAC,QAAQ,EAAC,OAAO,GAAG,IACzB,IACC,EACT,wBAAC,eAAI,kBAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,iBAC9D,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;wBAC9C,OAAO,CACL,uBAAC,mBAAQ,kBAEP,OAAO,EAAE,GAAG,EAAE;gCACZ,IAAI,OAAO,EAAE;oCACX,OAAO,EAAE,CAAA;iCACV;qCAAM,IAAI,EAAE,EAAE;oCACb,QAAQ,CAAC,EAAE,CAAC,CAAA;iCACb;qCAAM,IAAI,IAAI,EAAE;oCACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;iCAClB;gCACD,eAAe,EAAE,CAAA;4BACnB,CAAC,EACD,aAAa,sBAEZ,IAAI,KAbA,IAAI,CAcA,CACZ,CAAA;oBACH,CAAC,CAAC,EACD,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,uBAAC,mBAAQ,kBACP,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,WAAW,CAAC,CAAA;4BACrB,eAAe,EAAE,CAAA;wBACnB,CAAC,EACD,aAAa,oCAGJ,CACZ,KACI,KACC,CACX,CAAA;AACH,CAAC,CAAA;AA1DY,QAAA,QAAQ,YA0DpB"}
@@ -1,35 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Menu as MenuIcon } from '@mui/icons-material';
3
- import { Menu, MenuItem } from '@mui/material';
4
- import { FlexRow, LinkEx } from '@xylabs/sdk-react';
5
- import { useRef, useState } from 'react';
6
- import { useNavigate } from 'react-router-dom';
7
- export const SiteMenu = ({ hideSettingsMenuItem, menuItems, ...props }) => {
8
- const [menuElement, setMenuElement] = useState(null);
9
- const open = Boolean(menuElement);
10
- const navigate = useNavigate();
11
- const handleMenuClose = () => {
12
- setMenuElement(null);
13
- };
14
- const ref = useRef(null);
15
- return (_jsxs(FlexRow, { alignItems: "stretch", ...props, children: [_jsx(LinkEx, { color: "inherit", onClick: () => {
16
- setMenuElement(ref.current);
17
- }, children: _jsx("div", { style: { alignItems: 'center', cursor: 'pointer', display: 'flex' }, ref: ref, children: _jsx(MenuIcon, { fontSize: "large" }) }) }), _jsxs(Menu, { anchorEl: menuElement, open: open, onClose: handleMenuClose, children: [menuItems?.map(({ name, to, href, onClick }) => {
18
- return (_jsx(MenuItem, { onClick: () => {
19
- if (onClick) {
20
- onClick();
21
- }
22
- else if (to) {
23
- navigate(to);
24
- }
25
- else if (href) {
26
- window.open(href);
27
- }
28
- handleMenuClose();
29
- }, disableRipple: true, children: name }, name));
30
- }), hideSettingsMenuItem ? null : (_jsx(MenuItem, { onClick: () => {
31
- navigate('/settings');
32
- handleMenuClose();
33
- }, disableRipple: true, children: "Settings" }))] })] }));
34
- };
35
- //# sourceMappingURL=SiteMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SiteMenu.js","sourceRoot":"","sources":["../../../../../src/components/Toolbar/System/SiteMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAgB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAM,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAclD,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACjG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA2B,IAAI,CAAC,CAAA;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,cAAc,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAExB,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aACrC,KAAC,MAAM,IACL,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAC7B,CAAC,YAED,cAAK,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,YAChF,KAAC,QAAQ,IAAC,QAAQ,EAAC,OAAO,GAAG,GACzB,GACC,EACT,MAAC,IAAI,IAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,aAC9D,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;wBAC9C,OAAO,CACL,KAAC,QAAQ,IAEP,OAAO,EAAE,GAAG,EAAE;gCACZ,IAAI,OAAO,EAAE;oCACX,OAAO,EAAE,CAAA;iCACV;qCAAM,IAAI,EAAE,EAAE;oCACb,QAAQ,CAAC,EAAE,CAAC,CAAA;iCACb;qCAAM,IAAI,IAAI,EAAE;oCACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;iCAClB;gCACD,eAAe,EAAE,CAAA;4BACnB,CAAC,EACD,aAAa,kBAEZ,IAAI,IAbA,IAAI,CAcA,CACZ,CAAA;oBACH,CAAC,CAAC,EACD,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,KAAC,QAAQ,IACP,OAAO,EAAE,GAAG,EAAE;4BACZ,QAAQ,CAAC,WAAW,CAAC,CAAA;4BACrB,eAAe,EAAE,CAAA;wBACnB,CAAC,EACD,aAAa,+BAGJ,CACZ,IACI,IACC,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -1,77 +0,0 @@
1
- import { Menu as MenuIcon } from '@mui/icons-material'
2
- import { Menu, MenuItem } from '@mui/material'
3
- import { FlexBoxProps, FlexRow, LinkEx } from '@xylabs/sdk-react'
4
- import { useRef, useState } from 'react'
5
- import { To, useNavigate } from 'react-router-dom'
6
-
7
- export interface SiteMenuItem {
8
- name: string
9
- to?: To
10
- href?: string
11
- onClick?: () => void
12
- }
13
-
14
- export interface SiteMenuProps extends FlexBoxProps {
15
- hideSettingsMenuItem?: boolean
16
- menuItems?: SiteMenuItem[]
17
- }
18
-
19
- export const SiteMenu: React.FC<SiteMenuProps> = ({ hideSettingsMenuItem, menuItems, ...props }) => {
20
- const [menuElement, setMenuElement] = useState<HTMLButtonElement | null>(null)
21
- const open = Boolean(menuElement)
22
- const navigate = useNavigate()
23
-
24
- const handleMenuClose = () => {
25
- setMenuElement(null)
26
- }
27
-
28
- const ref = useRef(null)
29
-
30
- return (
31
- <FlexRow alignItems="stretch" {...props}>
32
- <LinkEx
33
- color="inherit"
34
- onClick={() => {
35
- setMenuElement(ref.current)
36
- }}
37
- >
38
- <div style={{ alignItems: 'center', cursor: 'pointer', display: 'flex' }} ref={ref}>
39
- <MenuIcon fontSize="large" />
40
- </div>
41
- </LinkEx>
42
- <Menu anchorEl={menuElement} open={open} onClose={handleMenuClose}>
43
- {menuItems?.map(({ name, to, href, onClick }) => {
44
- return (
45
- <MenuItem
46
- key={name}
47
- onClick={() => {
48
- if (onClick) {
49
- onClick()
50
- } else if (to) {
51
- navigate(to)
52
- } else if (href) {
53
- window.open(href)
54
- }
55
- handleMenuClose()
56
- }}
57
- disableRipple
58
- >
59
- {name}
60
- </MenuItem>
61
- )
62
- })}
63
- {hideSettingsMenuItem ? null : (
64
- <MenuItem
65
- onClick={() => {
66
- navigate('/settings')
67
- handleMenuClose()
68
- }}
69
- disableRipple
70
- >
71
- Settings
72
- </MenuItem>
73
- )}
74
- </Menu>
75
- </FlexRow>
76
- )
77
- }