From 9260e5bc33277ca1c77b5d4adf02664f24d89c54 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 23 Mar 2023 16:33:10 -0700 Subject: [PATCH] Updated settings. --- components/layout/SettingsLayout.js | 27 ++++++++++++------- components/layout/SettingsLayout.module.css | 6 +++++ components/layout/SideNav.js | 4 +-- components/layout/SideNav.module.css | 1 + components/metrics/WebsiteChart.js | 2 +- components/pages/login/LoginForm.module.css | 4 ++- .../pages/settings/profile/ProfileDetails.js | 8 ++++++ .../pages/settings/profile/ProfileSettings.js | 7 +---- pages/login.js | 2 +- pages/settings/index.js | 4 ++- pages/settings/profile/index.js | 6 ++--- pages/settings/teams/[id]/index.js | 6 ++--- pages/settings/teams/index.js | 6 ++--- pages/settings/users/[id]/index.js | 6 ++--- pages/settings/users/index.js | 6 ++--- pages/settings/websites/[id]/index.js | 6 ++--- 16 files changed, 62 insertions(+), 39 deletions(-) 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 && ( -