| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -16,7 +16,6 @@ import NewIcon from '@geist-ui/icons/plusCircle';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import YourIcon from '@geist-ui/icons/list'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import MoonIcon from '@geist-ui/icons/moon';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import SunIcon from '@geist-ui/icons/sun';
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import type { ThemeProps } from "@lib/types";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import useTheme from "@lib/hooks/use-theme";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import { Button } from "@geist-ui/core";
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -36,7 +35,7 @@ const Header = () => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const [expanded, setExpanded] = useState<boolean>(false)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const [, setBodyHidden] = useBodyScroll(null, { scrollLayer: true })
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const isMobile = useMediaQuery('xs', { match: 'down' })
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const { signedIn: isSignedIn } = useSignedIn()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const { signedIn: isSignedIn, signout } = useSignedIn()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const [pages, setPages] = useState<Tab[]>([])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const { changeTheme, theme } = useTheme()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    useEffect(() => {
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -50,49 +49,7 @@ const Header = () => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }, [isMobile])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    useEffect(() => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        const pageList: Tab[] = [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "Home",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <HomeIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "home"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "New",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/new",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <NewIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "new"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "Yours",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/mine",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <YourIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "mine"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "Sign out",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/signout",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <SignOutIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "signout"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "Sign in",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/signin",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <SignInIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "signin"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: "Sign up",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "/signup",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                icon: <SignUpIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                value: "signup"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        const defaultPages: Tab[] = [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                name: isMobile ? "GitHub" : "",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                href: "https://github.com/maxleiter/drift",
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -113,9 +70,104 @@ const Header = () => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        ]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        setPages(pageList.filter(page => page.condition))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (isSignedIn)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            setPages([
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'home',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <HomeIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'home',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    href: '/'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'yours',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <YourIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'yours',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    href: '/mine'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'sign out',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <SignOutIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'signout',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    onClick: signout
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                ...defaultPages
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            setPages([
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'home',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <HomeIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'home',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    href: '/'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'Sign in',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <SignInIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'signin',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    href: '/signin'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    name: 'Sign up',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    icon: <SignUpIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    value: 'signup',
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    href: '/signup'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                ...defaultPages
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // TODO: investigate deps causing infinite loop 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }, [changeTheme, isMobile, isSignedIn, theme])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // useEffect(() => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     const pageList: Tab[] = [
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "Home",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <HomeIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "home"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "New",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/new",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <NewIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "new"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "Yours",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/mine",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <YourIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "mine"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "Sign out",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/signout",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <SignOutIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "signout"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "Sign in",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/signin",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <SignInIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "signin"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             name: "Sign up",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             href: "/signup",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             icon: <SignUpIcon />,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             condition: !isSignedIn,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //             value: "signup"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //         },
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     ]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    //     setPages(pageList.filter(page => page.condition))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    // }, [changeTheme, isMobile, isSignedIn, theme])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    const onTabChange = useCallback((tab: string) => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (typeof window === 'undefined') return
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |