@learningpool/ui 1.6.0-beta.4 → 1.6.0-beta.6

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 (19) hide show
  1. package/components/navigation/VerticalNavigation/VerticalNavigation.d.ts +13 -0
  2. package/components/navigation/VerticalNavigation/VerticalNavigation.js +39 -14
  3. package/components/navigation/VerticalNavigation/VerticalNavigationAvatar.d.ts +24 -0
  4. package/components/navigation/VerticalNavigation/VerticalNavigationAvatar.js +84 -0
  5. package/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.d.ts +827 -0
  6. package/components/navigation/VerticalNavigation/VerticalNavigationAvatarStyles.js +31 -0
  7. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.d.ts +1 -1
  8. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItem.js +1 -1
  9. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenu.js +1 -1
  10. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemFlyoutMenuStyles.js +12 -9
  11. package/components/navigation/VerticalNavigation/VerticalNavigationItem/VerticalNavigationItemStyles.js +12 -13
  12. package/components/navigation/VerticalNavigation/VerticalNavigationMotion.d.ts +141 -0
  13. package/components/navigation/VerticalNavigation/VerticalNavigationMotion.js +109 -0
  14. package/components/navigation/VerticalNavigation/VerticalNavigationStyles.js +16 -15
  15. package/package.json +2 -1
  16. package/utils/constants.d.ts +1 -0
  17. package/utils/constants.js +1 -0
  18. package/components/navigation/VerticalNavigation/AvatarPanel.d.ts +0 -8
  19. package/components/navigation/VerticalNavigation/AvatarPanel.js +0 -97
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { IVerticalNavigationItemProps } from './VerticalNavigationItem/VerticalNavigationItem';
3
+ import { IAvatarMenuItemProps } from './VerticalNavigationAvatar';
3
4
  interface VerticalNavigationProps {
4
5
  logo?: string;
5
6
  logoText?: string;
@@ -14,6 +15,18 @@ interface VerticalNavigationProps {
14
15
  isDrawerOpen?: boolean;
15
16
  isPersistent?: boolean;
16
17
  setIsPersistent?: any;
18
+ appRootID?: string;
19
+ hasAvatar?: boolean;
20
+ avatarPanelOnClickSwitchDirection?: any;
21
+ avatarPanelOnClickLogout?: any;
22
+ avatarPanelOnClickViewProfile?: any;
23
+ avatarPanelViewProfileString?: string;
24
+ avatarPanelOnClickEditProfile?: any;
25
+ avatarPanelEditProfileString?: string;
26
+ avatarPanelMenuItems?: Array<IAvatarMenuItemProps>;
27
+ avatarPanelOnClickMainAction?: any;
28
+ avatarPanelMainActionString?: string;
29
+ avatarPanelSettingItems?: Array<IAvatarMenuItemProps>;
17
30
  }
18
31
  declare const VerticalNavigation: (props: VerticalNavigationProps) => React.ReactElement;
19
32
  export default VerticalNavigation;
@@ -9,10 +9,21 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
12
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
24
  import React, { useEffect } from 'react';
14
25
  import { useTheme } from '@mui/material/styles';
15
- import { Avatar, Modal, List, Tooltip } from '../../../index';
26
+ import { Avatar, List, Tooltip } from '../../../index';
16
27
  import { Box } from '@mui/material';
17
28
  import { StreamSuiteLogo, NotchSVG, NotchExtendSVG } from '../../../assets/Images';
18
29
  import { AppSwitcher } from '@learningpool/app-switcher';
@@ -20,13 +31,14 @@ import { ChevronLeft, ChevronRight, PushPin } from '@mui/icons-material';
20
31
  import VerticalNavigationItem from './VerticalNavigationItem/VerticalNavigationItem';
21
32
  import { DRAWER_WIDTH, DrawerHeader, DrawerToggle, DrawerToggleHitboxContent, StyledDivider, StyledNav, StyledNavSecondary, DrawerShadow, StyledAside, NotchContainer, NotchBackground, NotchBackgroundClip, NotchSeemMask, StyledDrawer } from './VerticalNavigationStyles';
22
33
  import { ListItem, ListItemButton, ListItemIcon, ListItemText } from './VerticalNavigationItem/VerticalNavigationItemStyles';
23
- import AvatarPanel from './AvatarPanel';
34
+ import AvatarPanel from './VerticalNavigationAvatar';
24
35
  import { motion } from '../../../utils/theme';
25
36
  import { handleAvatarInitials } from '../../../utils/helpers';
37
+ import { DEFAULT_REACT_APP_ID } from '../../../utils/constants';
26
38
  var VerticalNavigation = function (props) {
27
39
  var _a, _b;
28
40
  var theme = useTheme();
29
- var items = props.items, secondaryItems = props.secondaryItems, logo = props.logo, logoText = props.logoText, logoOnClick = props.logoOnClick, hasStreamHome = props.hasStreamHome, streamHomeApiKey = props.streamHomeApiKey, streamHomeBaseUrl = props.streamHomeBaseUrl, streamHomeAccessToken = props.streamHomeAccessToken;
41
+ var items = props.items, secondaryItems = props.secondaryItems, logo = props.logo, logoText = props.logoText, logoOnClick = props.logoOnClick, appRootID = props.appRootID, hasStreamHome = props.hasStreamHome, streamHomeApiKey = props.streamHomeApiKey, streamHomeBaseUrl = props.streamHomeBaseUrl, streamHomeAccessToken = props.streamHomeAccessToken, rest = __rest(props, ["items", "secondaryItems", "logo", "logoText", "logoOnClick", "appRootID", "hasStreamHome", "streamHomeApiKey", "streamHomeBaseUrl", "streamHomeAccessToken"]);
30
42
  var propIsDrawerOpen = typeof (props === null || props === void 0 ? void 0 : props.isDrawerOpen) === 'boolean' ? props.isDrawerOpen : undefined;
31
43
  var propIsPersistent = typeof (props === null || props === void 0 ? void 0 : props.isPersistent) === 'boolean' ? props.isPersistent : undefined;
32
44
  var avatarName = (_a = props === null || props === void 0 ? void 0 : props.avatarName) !== null && _a !== void 0 ? _a : 'Avatar name';
@@ -37,6 +49,18 @@ var VerticalNavigation = function (props) {
37
49
  useEffect(function () { return setIsDrawerOpen(propIsDrawerOpen !== null && propIsDrawerOpen !== void 0 ? propIsDrawerOpen : false); }, [propIsDrawerOpen]);
38
50
  useEffect(function () { return setIsDrawerOpen(propIsPersistent !== null && propIsPersistent !== void 0 ? propIsPersistent : false); }, [propIsPersistent]);
39
51
  useEffect(function () { return setAvatarInitials(handleAvatarInitials(avatarName)); }, [avatarName]);
52
+ // This fixes an issue with how MUI handles the modal and aria-hidden.
53
+ // When open, the Modal adds aria-hidden="true" to a top-level element,
54
+ // which causes some screen readers to annouce the elements as "blank".
55
+ // This fix just overrides the default aria-hidden attribute.
56
+ //
57
+ // https://github.com/mui/material-ui/issues/19450
58
+ useEffect(function () {
59
+ if (isDrawerOpen) {
60
+ var root = window.document.getElementById(appRootID !== null && appRootID !== void 0 ? appRootID : DEFAULT_REACT_APP_ID);
61
+ root === null || root === void 0 ? void 0 : root.removeAttribute('aria-hidden');
62
+ }
63
+ }, [isDrawerOpen]);
40
64
  var handleIsPersistent = function () {
41
65
  var _a, _b;
42
66
  if (props === null || props === void 0 ? void 0 : props.setIsPersistent) {
@@ -88,7 +112,7 @@ var VerticalNavigation = function (props) {
88
112
  fill: theme.palette.mode === 'dark'
89
113
  ? theme.palette.primary.contrastText
90
114
  : theme.palette.primary.main
91
- } })) })), _jsx(ListItemText, { primary: logoText !== null && logoText !== void 0 ? logoText : '', isDrawerOpen: isDrawerOpen || isPersistent })] })) })), _jsxs("div", __assign({ className: 'wrapper' }, { children: [_jsxs(NotchContainer, __assign({ sx: { height: '85px', position: 'relative !important' } }, { children: [_jsx(NotchBackground, {}), !isPersistent && _jsx(NotchBackgroundClip, {}), _jsx(NotchSeemMask, {})] })), !isPersistent && _jsx(DrawerToggle, __assign({ onClick: toggleDrawer(!isDrawerOpen), "aria-label": isDrawerOpen ? 'Close Navigation Menus' : 'Open Navigation Menus', "aria-expanded": isDrawerOpen ? 'true' : 'false', "aria-controls": "vertical-navigation" }, { children: _jsx(DrawerToggleHitboxContent, { children: isDrawerOpen
115
+ } })) })), _jsx(ListItemText, { primary: logoText !== null && logoText !== void 0 ? logoText : '', isDrawerOpen: isDrawerOpen || isPersistent })] })) })), _jsxs("div", __assign({ className: 'wrapper' }, { children: [_jsxs(NotchContainer, __assign({ sx: { height: '85px', position: 'relative !important' } }, { children: [_jsx(NotchBackground, {}), !isPersistent && _jsx(NotchBackgroundClip, {}), _jsx(NotchSeemMask, {})] })), !isPersistent && _jsx(DrawerToggle, __assign({ onClick: toggleDrawer(!isDrawerOpen), "aria-label": isDrawerOpen ? 'Close Navigation' : 'Open Navigation', "aria-expanded": isDrawerOpen ? 'true' : 'false', "aria-controls": "vertical-navigation" }, { children: _jsx(DrawerToggleHitboxContent, { children: isDrawerOpen
92
116
  ? (_jsx(ChevronLeft, { style: {
93
117
  fontSize: '1.75rem',
94
118
  height: '1.75rem',
@@ -109,7 +133,7 @@ var VerticalNavigation = function (props) {
109
133
  top: '50%',
110
134
  transform: 'translate(50%, -50%)',
111
135
  width: '50px'
112
- } }), _jsxs(DrawerToggle, __assign({ onClick: handleIsPersistent, "aria-label": isDrawerOpen ? 'Close Navigation Menus' : 'Open Navigation Menus', "aria-expanded": isDrawerOpen ? 'true' : 'false', "aria-controls": "vertical-navigation", style: {
136
+ } }), _jsxs(DrawerToggle, __assign({ onClick: handleIsPersistent, "aria-label": isDrawerOpen ? 'Close Navigation' : 'Open Navigation', "aria-expanded": isDrawerOpen ? 'true' : 'false', "aria-controls": "vertical-navigation", style: {
113
137
  display: 'none',
114
138
  position: 'fixed',
115
139
  top: '50%',
@@ -160,7 +184,7 @@ var VerticalNavigation = function (props) {
160
184
  backgroundColor: theme.palette.mode === 'dark'
161
185
  ? theme.palette.primary.main
162
186
  : theme.palette.background.paper
163
- } }, { children: _jsxs(StyledNavSecondary, __assign({ "aria-label": 'Secondary navigation menu' }, { children: [_jsx(StyledDivider, { isDrawerOpen: isDrawerOpen || isPersistent }), _jsxs(List, __assign({ style: {
187
+ } }, { children: _jsxs(StyledNavSecondary, __assign({ "aria-label": 'Secondary' }, { children: [_jsx(StyledDivider, { isDrawerOpen: isDrawerOpen || isPersistent }), _jsxs(List, __assign({ style: {
164
188
  width: DRAWER_WIDTH.Expanded,
165
189
  backgroundColor: theme.palette.mode === 'dark'
166
190
  ? theme.palette.primary.main
@@ -175,7 +199,7 @@ var VerticalNavigation = function (props) {
175
199
  justifyContent: 'center'
176
200
  } }, { children: _jsx(AppSwitcher, { apiKey: streamHomeApiKey !== null && streamHomeApiKey !== void 0 ? streamHomeApiKey : '', baseUrl: streamHomeBaseUrl !== null && streamHomeBaseUrl !== void 0 ? streamHomeBaseUrl : '', token: streamHomeAccessToken !== null && streamHomeAccessToken !== void 0 ? streamHomeAccessToken : '' }) })) })), _jsx(ListItemText, { primary: 'App switcher', isDrawerOpen: isDrawerOpen || isPersistent })] })) })))
177
201
  : null, secondaryItems && secondaryItems.length > 0 && secondaryItems.map(function (item, index) { return (_jsx(VerticalNavigationItem, __assign({}, item, { index: index, isDrawerOpen: isDrawerOpen || isPersistent, isSecondary: true }))); }), avatarName
178
- ? (_jsx(VerticalNavigationItem, { label: avatarName, icon: _jsx(Avatar, __assign({ style: {
202
+ ? (_jsx(VerticalNavigationItem, { label: avatarName, "aria-controls": 'avatar-panel', icon: _jsx(Avatar, __assign({ style: {
179
203
  // backgroundColor: mainTheme.colorButtonText,
180
204
  // color: mainTheme.colorButton,
181
205
  fontSize: '0.75rem',
@@ -187,14 +211,15 @@ var VerticalNavigation = function (props) {
187
211
  padding: 0,
188
212
  minHeight: 52,
189
213
  transition: "max-height 225ms ".concat(motion.easeInOut, " 0ms !important")
190
- }, hasFlyout: true, fullHeightFlyout: true, content: _jsx(AvatarPanel, { avatarName: avatarName }), isDrawerOpen: isDrawerOpen }))
214
+ }, hasFlyout: true, fullHeightFlyout: true, content: _jsx(AvatarPanel, __assign({ avatarName: avatarName }, rest)), isDrawerOpen: isDrawerOpen }))
191
215
  : null] }))] })) }))] }))); };
192
- return (_jsxs(StyledAside, { children: [_jsx(DrawerShadow, { className: 'drawerShadow', "aria-hidden": 'true', isDrawerOpen: isDrawerOpen || isPersistent, style: {
216
+ return (_jsxs(StyledAside, __assign({ "aria-label": "Site navigation" }, { children: [_jsx(DrawerShadow, { className: 'drawerShadow', "aria-hidden": 'true', isDrawerOpen: isDrawerOpen || isPersistent, style: {
193
217
  display: isPersistent ? 'none' : 'block'
194
- } }), _jsx(Modal, __assign({ "aria-hidden": false, keepMounted: true, disablePortal: true, open: isDrawerOpen || isPersistent, onClose: toggleDrawer(false), hideBackdrop: isPersistent, disableScrollLock: isPersistent, disableEnforceFocus: isPersistent, style: {
195
- right: isPersistent ? 'auto' : 0 // @TODO: rtl support
196
- } }, { children: _jsx(StyledDrawer, __assign({ "aria-label": 'Navigation Menus', id: 'vertical-navigation', anchor: 'left', open: isDrawerOpen || isPersistent, onClose: toggleDrawer(false), ModalProps: {
197
- keepMounted: true
198
- }, variant: 'permanent' }, { children: listContent() })) }))] }));
218
+ } }), _jsx(StyledDrawer, __assign({ id: 'vertical-navigation', anchor: 'left', open: isDrawerOpen || isPersistent, onClose: toggleDrawer(false), variant: isDrawerOpen ? 'temporary' : 'permanent', ModalProps: {
219
+ keepMounted: true,
220
+ disablePortal: true,
221
+ open: isDrawerOpen,
222
+ onClose: toggleDrawer(false)
223
+ } }, { children: listContent() }))] })));
199
224
  };
200
225
  export default VerticalNavigation;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export interface IAvatarMenuItemProps {
3
+ label: string;
4
+ icon: any;
5
+ onClick: any;
6
+ }
7
+ export interface IAvatarPanelProps {
8
+ avatarName: string;
9
+ editProfileText?: string;
10
+ logoutText?: string;
11
+ avatarPanelOnClickSwitchDirection?: any;
12
+ avatarPanelOnClickLogout?: any;
13
+ avatarPanelOnClickViewProfile?: any;
14
+ avatarPanelViewProfileString?: string;
15
+ avatarPanelOnClickEditProfile?: any;
16
+ avatarPanelEditProfileString?: string;
17
+ avatarPanelMenuItems?: Array<IAvatarMenuItemProps>;
18
+ avatarPanelOnClickMainAction?: any;
19
+ avatarPanelMainActionString?: string;
20
+ avatarPanelSettingItems?: Array<IAvatarMenuItemProps>;
21
+ avatarPanelInvertNavString?: string;
22
+ }
23
+ declare const AvatarPanel: (props: IAvatarPanelProps) => React.ReactElement;
24
+ export default AvatarPanel;
@@ -0,0 +1,84 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import React, { useEffect } from 'react';
14
+ import { Box, ButtonGroup, Button, Link, List, ListItem, ListItemIcon, ListItemText } from '../../../index';
15
+ import { StyledBox, StyledBoxProfile, StyledAvatarName, StyledAvatar, StyledOutlineButton, StyledBoxProfileEdit, StyledListItemButton } from './VerticalNavigationAvatarStyles';
16
+ import { useTheme } from '@mui/material/styles';
17
+ import EditIcon from '@mui/icons-material/Edit';
18
+ import LogoutIcon from '@mui/icons-material/Logout';
19
+ import { motion } from 'framer-motion';
20
+ import { motionParent, motionFadeIn, motionFadeInUp, motionWhileHover, motionWhileTap } from './VerticalNavigationMotion';
21
+ import { handleAvatarInitials } from '../../../utils/helpers';
22
+ import { Person, Settings } from '@mui/icons-material';
23
+ var AvatarPanel = function (props) {
24
+ var _a;
25
+ var theme = useTheme();
26
+ var avatarName = props.avatarName, avatarPanelOnClickLogout = props.avatarPanelOnClickLogout, logoutText = props.logoutText, avatarPanelOnClickViewProfile = props.avatarPanelOnClickViewProfile, avatarPanelViewProfileString = props.avatarPanelViewProfileString, avatarPanelOnClickEditProfile = props.avatarPanelOnClickEditProfile, avatarPanelEditProfileString = props.avatarPanelEditProfileString, avatarPanelMenuItems = props.avatarPanelMenuItems, avatarPanelOnClickMainAction = props.avatarPanelOnClickMainAction, avatarPanelMainActionString = props.avatarPanelMainActionString, avatarPanelSettingItems = props.avatarPanelSettingItems;
27
+ useEffect(function () { return setAvatarInitials(handleAvatarInitials(avatarName)); }, [
28
+ avatarName
29
+ ]);
30
+ var _b = React.useState((_a = handleAvatarInitials(avatarName)) !== null && _a !== void 0 ? _a : 'AN'), avatarInitials = _b[0], setAvatarInitials = _b[1];
31
+ return (_jsxs(StyledBox
32
+ // TODO: add check for isAvatarOpen to trigger animation effects
33
+ // animate={ isAvatarOpen ? 'open' : 'closed' }
34
+ , __assign({
35
+ // TODO: add check for isAvatarOpen to trigger animation effects
36
+ // animate={ isAvatarOpen ? 'open' : 'closed' }
37
+ variants: motionParent }, { children: [avatarPanelOnClickLogout && (_jsx(Button
38
+ // @ts-expect-error
39
+ , __assign({
40
+ // @ts-expect-error
41
+ component: motion.button, variants: motionFadeIn, style: {
42
+ left: theme.direction === 'rtl' ? theme.spacing(1) : 'auto',
43
+ position: 'absolute',
44
+ right: theme.direction === 'rtl' ? 'auto' : theme.spacing(1),
45
+ top: theme.spacing(1)
46
+ }, onClick: avatarPanelOnClickLogout, startIcon: _jsx(LogoutIcon, {}), variant: 'text', color: 'inherit' }, { children: logoutText !== null && logoutText !== void 0 ? logoutText : 'Logout' }))), _jsxs(Box, __assign({ style: {
47
+ alignItems: 'center',
48
+ display: 'flex',
49
+ flexDirection: 'column'
50
+ } }, { children: [_jsxs(StyledBoxProfile, __assign({ variants: motionFadeInUp }, { children: [_jsx(StyledAvatar, __assign({ style: { marginRight: '0.5rem' } }, { children: avatarInitials })), _jsxs(StyledAvatarName, { children: [_jsx("span", __assign({ style: { fontWeight: 300 } }, { children: "Hi," })), " ", _jsx("strong", { children: avatarName.split(' ')[0] })] })] })), avatarPanelOnClickViewProfile && (_jsx(StyledBoxProfileEdit, __assign({ variants: motionFadeInUp, style: {
51
+ flexDirection: 'row',
52
+ marginBottom: theme.spacing(1)
53
+ } }, { children: _jsxs(ButtonGroup, __assign({ variant: "contained", "aria-label": "split button" }, { children: [_jsx(Button, __assign({ variant: 'contained', color: 'primary', size: 'medium', onClick: avatarPanelOnClickViewProfile, startIcon: _jsx(Person, {}) }, { children: avatarPanelViewProfileString !== null && avatarPanelViewProfileString !== void 0 ? avatarPanelViewProfileString : 'View Profile' })), avatarPanelOnClickEditProfile && (_jsx(Button, __assign({ size: 'medium', "aria-label": avatarPanelEditProfileString !== null && avatarPanelEditProfileString !== void 0 ? avatarPanelEditProfileString : 'Edit Profile', onClick: avatarPanelOnClickEditProfile }, { children: _jsx(EditIcon, {}) })))] })) })))] })), _jsxs(Box, __assign({ style: {
54
+ alignItems: 'center',
55
+ display: 'flex',
56
+ flexDirection: 'column'
57
+ } }, { children: [avatarPanelMenuItems && avatarPanelMenuItems.length > 0 && (_jsx(List, __assign({ style: {
58
+ marginBottom: theme.spacing(2),
59
+ maxWidth: '14rem'
60
+ } }, { children: avatarPanelMenuItems.map(function (avatarMenuItem) { return (_jsx(ListItem, __assign({ component: motion.div, variants: motionFadeInUp, whileHover: motionWhileHover, whileTap: motionWhileTap, disablePadding: true }, { children: _jsxs(StyledListItemButton
61
+ // TODO: figure out if these are links or buttons
62
+ // @ts-expect-error
63
+ , __assign({
64
+ // TODO: figure out if these are links or buttons
65
+ // @ts-expect-error
66
+ component: Link, role: 'link', onClick: avatarMenuItem.onClick }, { children: [_jsx(ListItemIcon, __assign({ "aria-hidden": true, style: {
67
+ minWidth: theme.spacing(5)
68
+ } }, { children: avatarMenuItem.icon })), _jsx(ListItemText, { primary: avatarMenuItem.label })] })) }))); }) }))), avatarPanelOnClickMainAction && _jsx(StyledOutlineButton
69
+ // @ts-expect-error
70
+ , __assign({
71
+ // @ts-expect-error
72
+ component: motion.button, variants: motionFadeInUp, disablePadding: true, variant: 'outlined', color: 'primary', size: 'medium', onClick: avatarPanelOnClickMainAction, startIcon: _jsx(Settings, {}) }, { children: avatarPanelMainActionString })), _jsx(List, __assign({ style: { marginBottom: theme.spacing(2) } }, { children: avatarPanelSettingItems &&
73
+ avatarPanelSettingItems.length > 0 &&
74
+ avatarPanelSettingItems.map(function (avatarMenuItem) { return (_jsx(ListItem, __assign({ component: motion.div, variants: motionFadeInUp, whileHover: motionWhileHover, whileTap: motionWhileTap, disablePadding: true }, { children: _jsxs(StyledListItemButton
75
+ // TODO: figure out if these are links or buttons
76
+ // @ts-expect-error
77
+ , __assign({
78
+ // TODO: figure out if these are links or buttons
79
+ // @ts-expect-error
80
+ component: Link, role: 'link', onClick: avatarMenuItem.onClick }, { children: [_jsx(ListItemIcon, __assign({ "aria-hidden": true, style: {
81
+ minWidth: theme.spacing(5)
82
+ } }, { children: avatarMenuItem.icon })), _jsx(ListItemText, { primary: avatarMenuItem.label })] })) }))); }) }))] }))] })));
83
+ };
84
+ export default AvatarPanel;