diff --git a/components/layout/SettingsLayout.js b/components/layout/SettingsLayout.js index be4a07e3..b7cb093f 100644 --- a/components/layout/SettingsLayout.js +++ b/components/layout/SettingsLayout.js @@ -1,23 +1,32 @@ +import classNames from 'classnames'; +import { useRouter } from 'next/router'; import AppLayout from './AppLayout'; -import styles from './SettingsLayout.module.css'; -import useMessages from 'hooks/useMessages'; import SideNav from './SideNav'; +import useUser from 'hooks/useUser'; +import useMessages from 'hooks/useMessages'; +import useConfig from 'hooks/useConfig'; +import styles from './SettingsLayout.module.css'; export default function SettingsLayout({ children }) { + const { user } = useUser(); + const { pathname } = useRouter(); const { formatMessage, labels } = useMessages(); + const { cloudMode } = useConfig(); const items = [ - { label: formatMessage(labels.websites), url: '/settings/websites' }, - { label: formatMessage(labels.teams), url: '/settings/teams' }, - { label: formatMessage(labels.users), url: '/settings/users' }, - { label: formatMessage(labels.profile), url: '/settings/profile' }, - ]; + { key: 'websites', label: formatMessage(labels.websites), url: '/settings/websites' }, + { key: 'teams', label: formatMessage(labels.teams), url: '/settings/teams' }, + user.isAdmin && { key: 'users', label: formatMessage(labels.users), url: '/settings/users' }, + { key: 'profile', label: formatMessage(labels.profile), url: '/settings/profile' }, + ].filter(n => n); + + const getKey = () => items.find(({ url }) => pathname.startsWith(url))?.key; return (
-
- +
+
{children}
diff --git a/components/layout/SettingsLayout.module.css b/components/layout/SettingsLayout.module.css index 5f0884c4..770d4b87 100644 --- a/components/layout/SettingsLayout.module.css +++ b/components/layout/SettingsLayout.module.css @@ -9,9 +9,15 @@ flex-direction: column; width: 200px; padding: 40px 0; + margin-right: 20px; } .content { display: flex; flex-direction: column; } + +.menu.hidden { + visibility: hidden; + width: 0; +} diff --git a/components/layout/SideNav.js b/components/layout/SideNav.js index 2706dc7f..e521fe42 100644 --- a/components/layout/SideNav.js +++ b/components/layout/SideNav.js @@ -2,9 +2,9 @@ import { Menu, Item } from 'react-basics'; import Link from 'next/link'; import styles from './SideNav.module.css'; -export default function SideNav({ selectedKey, items, shallow }) { +export default function SideNav({ selectedKey, items, shallow, onSelect = () => {} }) { return ( - + {({ key, label, url }) => ( diff --git a/components/layout/SideNav.module.css b/components/layout/SideNav.module.css index e55f5d7a..b664194d 100644 --- a/components/layout/SideNav.module.css +++ b/components/layout/SideNav.module.css @@ -11,4 +11,5 @@ .item { padding: 0; + border-radius: var(--border-radius); } diff --git a/components/metrics/WebsiteChart.js b/components/metrics/WebsiteChart.js index b66f8ac2..0bf23b16 100644 --- a/components/metrics/WebsiteChart.js +++ b/components/metrics/WebsiteChart.js @@ -71,7 +71,7 @@ export default function WebsiteChart({ {showDetailsButton && ( -