import React, { createContext, Dispatch, FunctionComponent, SetStateAction, useContext, useMemo, useState, } from 'react' interface MenuStateContextType { isMenuOpen: boolean setIsMenuOpen?: Dispatch> } export const MenuStateContext = createContext({ isMenuOpen: false, setIsMenuOpen: () => {}, }) export const useMenuContext: () => MenuStateContextType = () => { return useContext(MenuStateContext) } export const MenuProvider: FunctionComponent = ({ children }) => { const [isMenuOpen, setIsMenuOpen] = useState(false) const value = useMemo(() => ({ isMenuOpen, setIsMenuOpen }), [isMenuOpen]) return ( {children} ) } MenuProvider.displayName = 'MenuProvider'