2023-09-29 14:29:22 +02:00
|
|
|
'use client';
|
|
|
|
import { usePathname } from 'next/navigation';
|
2023-08-21 11:06:09 +02:00
|
|
|
import useUser from 'components/hooks/useUser';
|
|
|
|
import useMessages from 'components/hooks/useMessages';
|
2023-10-03 18:45:02 +02:00
|
|
|
import SideNav from 'components/layout/SideNav';
|
2023-09-29 14:29:22 +02:00
|
|
|
import styles from './layout.module.css';
|
2023-03-23 19:46:49 +01:00
|
|
|
|
2023-09-29 14:29:22 +02:00
|
|
|
export default function SettingsLayout({ children }) {
|
2023-03-24 00:33:10 +01:00
|
|
|
const { user } = useUser();
|
2023-09-29 14:29:22 +02:00
|
|
|
const pathname = usePathname();
|
2023-03-23 19:46:49 +01:00
|
|
|
const { formatMessage, labels } = useMessages();
|
2023-10-08 07:42:49 +02:00
|
|
|
const cloudMode = !!process.env.cloudMode;
|
2023-03-23 19:46:49 +01:00
|
|
|
|
|
|
|
const items = [
|
2023-03-24 00:33:10 +01:00
|
|
|
{ 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);
|
|
|
|
|
2023-04-12 22:40:19 +02:00
|
|
|
const getKey = () => items.find(({ url }) => pathname === url)?.key;
|
2023-03-23 19:46:49 +01:00
|
|
|
|
2023-10-16 01:06:41 +02:00
|
|
|
if (cloudMode && pathname != '/settings/profile') {
|
2023-10-08 07:42:49 +02:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2023-03-23 19:46:49 +01:00
|
|
|
return (
|
2023-09-29 14:29:22 +02:00
|
|
|
<div className={styles.layout}>
|
2023-03-24 18:55:20 +01:00
|
|
|
{!cloudMode && (
|
2023-09-29 14:29:22 +02:00
|
|
|
<div className={styles.menu}>
|
2023-03-24 00:33:10 +01:00
|
|
|
<SideNav items={items} shallow={true} selectedKey={getKey()} />
|
2023-09-29 14:29:22 +02:00
|
|
|
</div>
|
2023-03-24 18:55:20 +01:00
|
|
|
)}
|
2023-09-29 14:29:22 +02:00
|
|
|
<div className={styles.content}>{children}</div>
|
|
|
|
</div>
|
2023-03-23 19:46:49 +01:00
|
|
|
);
|
|
|
|
}
|