'use client'; import { Icon, Text } from 'react-basics'; import Link from 'next/link'; import classNames from 'classnames'; import HamburgerButton from 'components/common/HamburgerButton'; import ThemeButton from 'components/input/ThemeButton'; import LanguageButton from 'components/input/LanguageButton'; import ProfileButton from 'components/input/ProfileButton'; import TeamsButton from 'components/input/TeamsButton'; import Icons from 'components/icons'; import { useMessages, useNavigation, useTeamUrl } from 'components/hooks'; import styles from './NavBar.module.css'; import { useEffect } from 'react'; import { getItem, setItem } from 'next-basics'; export function NavBar() { const { formatMessage, labels } = useMessages(); const { pathname, router } = useNavigation(); const { teamId, renderTeamUrl } = useTeamUrl(); const cloudMode = !!process.env.cloudMode; const links = [ { label: formatMessage(labels.dashboard), url: renderTeamUrl('/dashboard') }, { label: formatMessage(labels.websites), url: renderTeamUrl('/websites') }, { label: formatMessage(labels.reports), url: renderTeamUrl('/reports') }, { label: formatMessage(labels.settings), url: renderTeamUrl('/settings') }, ].filter(n => n); const menuItems = [ { label: formatMessage(labels.dashboard), url: renderTeamUrl('/dashboard'), }, !cloudMode && { label: formatMessage(labels.settings), url: renderTeamUrl('/settings'), children: [ ...(teamId ? [ { label: formatMessage(labels.team), url: renderTeamUrl('/settings/team'), }, ] : []), { label: formatMessage(labels.websites), url: renderTeamUrl('/settings/websites'), }, ...(!teamId ? [ { label: formatMessage(labels.teams), url: renderTeamUrl('/settings/teams'), }, { label: formatMessage(labels.users), url: '/settings/users', }, ] : [ { label: formatMessage(labels.members), url: renderTeamUrl('/settings/members'), }, ]), ], }, { label: formatMessage(labels.profile), url: '/profile', }, !cloudMode && { label: formatMessage(labels.logout), url: '/logout' }, ].filter(n => n); const handleTeamChange = (teamId: string) => { const url = teamId ? `/teams/${teamId}` : '/'; setItem('umami.team', { id: teamId }); router.push(cloudMode ? `${process.env.cloudUrl}${url}` : url); }; useEffect(() => { const teamIdLocal = getItem('umami.team')?.id; if (teamIdLocal && pathname !== '/' && pathname !== '/dashboard') { const url = '/'; router.push(cloudMode ? `${process.env.cloudUrl}${url}` : url); } else if (teamIdLocal) { const url = `/teams/${teamIdLocal}/dashboard`; router.push(cloudMode ? `${process.env.cloudUrl}${url}` : url); } }, []); return (