'use client' import { Avatar } from '@/components/avatar' import { Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, } from '@/components/dropdown' import { Navbar, NavbarDivider, NavbarItem, NavbarLabel, NavbarSection, NavbarSpacer, } from '@/components/navbar' import { Sidebar, SidebarBody, SidebarHeader, SidebarItem, SidebarLabel, SidebarSection, } from '@/components/sidebar' import { StackedLayout } from '@/components/stacked-layout' import { Media } from '@/payload-types' import { useGlobal } from '@/providers/GlobalProvider' import { ArrowRightStartOnRectangleIcon, LightBulbIcon, UserIcon } from '@heroicons/react/16/solid' import { MagnifyingGlassIcon, SunIcon, MoonIcon } from '@heroicons/react/20/solid' import { useTheme } from 'next-themes' import Link from 'next/link' import React, { useMemo } from 'react' const navItems = [ { label: 'Home', url: '/' }, { label: 'Browse', url: '/books' }, { label: 'Events', url: '/events' }, { label: 'Settings', url: '/settings' }, ] export default function SiteNavigation(props: { children: React.ReactNode }) { const { children } = props const { theme, setTheme } = useTheme() const { user, setUser } = useGlobal() useMemo(() => { if (user) return fetch('/api/users/me', { method: 'GET', credentials: 'include', headers: { 'Content-Type': 'application/json', }, }).then(async (response) => { const userRequest = await response.json() setUser(userRequest.user) }) }, [user, setUser]) const profilePicture = user?.profilePicture as Media | undefined const initials = user?.firstName ? `${user?.firstName.slice(0, 1) || ''}${user?.lastName?.slice(0, 1)}` : 'U' return ( (window.location.href = '/')} className="max-lg:hidden" > Midrashim {navItems.map(({ label, url }) => ( {label} ))} setTheme(theme === 'dark' ? 'light' : 'dark')} > My profile {/* Settings Privacy policy */} Share feedback Sign out } sidebar={ Midrashim {navItems.map(({ label, url }) => ( {label} ))} } > {children} ) }