import Link from 'next/link' import { useRouter } from 'next/router' import { useState, useEffect } from 'react' import { IconChevronLeft } from '~/../../packages/ui' import * as NavItems from './NavigationMenu.constants' import NavigationMenuGuideList from './NavigationMenuGuideList' import NavigationMenuRefList from './NavigationMenuRefList' import NavigationMenuCliList from './NavigationMenuCliList' const SideNav = () => { const router = useRouter() const [level, setLevel] = useState('home') function handleRouteChange(url: string) { switch (url) { case `/docs`: setLevel('home') break case url.includes(`/docs/getting-started`) && url: setLevel('gettingstarted') break case url.includes(`/docs/guides/tutorials`) && url: setLevel('tutorials') break case url.includes(`/docs/guides/database`) && url: setLevel('database') break case url.includes(`/docs/guides/auth`) && url: setLevel('auth') break case url.includes(`/docs/guides/storage`) && url: setLevel('storage') break case url.includes(`/docs/guides/realtime`) && url: setLevel('realtime') break case url.includes(`/docs/guides/functions`) && url: setLevel('functions') break case url.includes(`/docs/reference`) && url: setLevel('reference') break case url.includes(`/docs/guides/integrations`) && url: setLevel('integrations') break case url.includes(`/docs/guides/platform`) || (url.includes(`/docs/guides/hosting/platform`) && url): setLevel('platform') break case url.includes(`/docs/new/reference/javascript/`) && url: setLevel('reference_javascript') break case url.includes(`/docs/new/reference/cli/`) && url: setLevel('reference_cli') break default: break } } useEffect(() => { handleRouteChange(router.basePath + router.asPath) // Listen for page changes after a navigation or when the query changes router.events.on('routeChangeComplete', handleRouteChange) return () => { router.events.off('routeChangeComplete', handleRouteChange) } }, [router.events]) const home = [ [ { label: 'Home', icon: 'home.svg', href: '', level: 'home', }, { label: 'Getting started', icon: 'getting-started.svg', href: '/getting-started', level: 'gettingstarted', }, { label: 'Tutorials', icon: 'tutorials.svg', href: '/guides/tutorials', level: 'tutorials', }, ], [ { label: 'Database', icon: 'database.svg', href: '/guides/database', level: 'database', }, { label: 'Auth', icon: 'auth.svg', href: '/guides/auth', level: 'auth', }, { label: 'Storage', icon: 'storage.svg', href: '/guides/storage', level: 'storage', }, { label: 'Realtime', icon: 'realtime.svg', href: '/guides/realtime', level: 'realtime', }, { label: 'Edge Functions', icon: 'functions.svg', href: '/guides/functions', level: 'functions', }, ], [ { label: 'API Reference', icon: 'reference.svg', href: '/reference', level: 'reference', }, { label: 'Integrations', icon: 'integrations.svg', href: '/guides/integrations', level: 'integrations', }, { label: 'Platform', icon: 'platform.svg', href: '/guides/hosting/platform', level: 'platform', }, ], ] return (