import React, { Dispatch, SetStateAction } from 'react' import Image from 'next/image' import Link from 'next/link' import { m, AnimatePresence, LazyMotion, domAnimation } from 'framer-motion' import { DEFAULT_EASE } from '~/lib/animations' import { Accordion, Button, TextLink } from 'ui' import MenuItem from './MenuItem' import * as supabaseLogoWordmarkDark from 'common/assets/images/supabase-logo-wordmark--dark.png' import * as supabaseLogoWordmarkLight from 'common/assets/images/supabase-logo-wordmark--light.png' import { useKey } from 'react-use' import { useIsLoggedIn, useIsUserLoading } from 'common' import { ChevronRight } from 'lucide-react' interface Props { open: boolean setOpen: Dispatch> isDarkMode: boolean menu: any } const MobileMenu = ({ open, setOpen, isDarkMode, menu }: Props) => { const isLoggedIn = useIsLoggedIn() const isUserLoading = useIsUserLoading() const container = { hidden: { opacity: 0 }, show: { opacity: 1, transition: { duration: 0.15, staggerChildren: 0.05, ease: DEFAULT_EASE } }, exit: { opacity: 0, transition: { duration: 0.15 } }, } const listItem = { hidden: { opacity: 0, y: 10 }, show: { opacity: 1, y: 0, transition: { duration: 0.25, ease: DEFAULT_EASE } }, exit: { opacity: 0, transition: { duration: 0.05 } }, } useKey('Escape', () => setOpen(false)) const AccordionMenuItem = ({ menuItem }: any) => ( <> {menuItem.title === 'Product' ? ( <> {Object.values(menuItem.subMenu)?.map((component: any) => ( ))}
Features Explore everything you can do with Supabase.
) : menuItem.title === 'Developers' ? (
{menuItem.subMenu['navigation'].map((column: any) => (
{column.label !== 'Developers' && ( )} {column.links.map((link: any) => ( ))}
))}
) : null} ) const Menu = () => ( {menu.primaryNav.map((menuItem: any) => ( {menuItem.hasDropdown ? ( ) : ( {menuItem.title} )} ))} ) return ( {open && (
Supabase Logo
{!isUserLoading && ( <> {isLoggedIn ? ( ) : ( <> )} )}
)}
{open && ( )}
) } export default MobileMenu