import React, { ReactNode } from 'react'; import Cookies from 'universal-cookie'; const DocContext = React.createContext<{ open: boolean, toggle: () => void, content?: ReactNode, setOpen: (value: boolean) => void, setContent: React.Dispatch>, }>({ open: false, toggle: () => { }, setOpen: () => { }, setContent: () => { }, }); export function DocProvider({ children }: React.PropsWithChildren) { const cookies = new Cookies(); const [open, setStateOpen] = React.useState(cookies.get('doc') === 'open'); const [content, setContent] = React.useState(); const setOpen = (value: boolean) => { cookies.set('doc', value ? 'open' : 'close', { path: '/' }); setStateOpen(value); } return ( setOpen(!open), }}> {children} ); } export const useDoc = () => React.useContext(DocContext); export const useThisDoc = (content?: ReactNode) => { const { setContent } = useDoc(); React.useEffect(() => { setContent(content); }, []); }