import clsx from 'clsx'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { signOut, useSession } from 'next-auth/react'; import type { ReactNode } from 'react'; import { Fragment, useState } from 'react'; import { Menu, Transition } from '@headlessui/react'; import { Bars3BottomLeftIcon } from '@heroicons/react/24/outline'; import GlobalNavigation from '~/components/global/GlobalNavigation'; import HomeNavigation from '~/components/global/HomeNavigation'; import OffersNavigation, { OffersNavigationAuthenticated, } from '~/components/offers/OffersNavigation'; import QuestionsNavigation from '~/components/questions/QuestionsNavigation'; import ResumesNavigation from '~/components/resumes/ResumesNavigation'; import GoogleAnalytics from './GoogleAnalytics'; import MobileNavigation from './MobileNavigation'; import type { ProductNavigationItems } from './ProductNavigation'; import ProductNavigation from './ProductNavigation'; import loginPageHref from '../shared/loginPageHref'; type Props = Readonly<{ children: ReactNode; }>; function ProfileJewel() { const router = useRouter(); const { data: session, status } = useSession(); const isSessionLoading = status === 'loading'; if (isSessionLoading) { return null; } const loginHref = loginPageHref(); if (session == null) { return router.pathname !== loginHref.pathname ? ( Log In ) : null; } const userNavigation = [ { href: '/profile', name: 'Profile' }, { href: '/api/auth/signout', name: 'Log out', onClick: (event: MouseEvent) => { event.preventDefault(); signOut(); }, }, ]; return (
); } export default function AppShell({ children }: Props) { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const router = useRouter(); const { data: session } = useSession(); const currentProductNavigation: Readonly<{ googleAnalyticsMeasurementID: string; logo?: React.ReactNode; navigation: ProductNavigationItems; showGlobalNav: boolean; title: string; titleHref: string; }> = (() => { const path = router.pathname; if (path.startsWith('/resumes')) { return ResumesNavigation; } if (path.startsWith('/offers')) { if (session == null) { return OffersNavigation; } return OffersNavigationAuthenticated; } if (path.startsWith('/questions')) { return QuestionsNavigation; } return HomeNavigation; })(); return (