import React, { ReactNode, useEffect } from "react"; import { Drawer as D } from "vaul"; import clsx from "clsx"; type Props = { toggleDrawer: Function; children: ReactNode; className?: string; dismissible?: boolean; }; export default function Drawer({ toggleDrawer, className, children, dismissible = true, }: Props) { const [drawerIsOpen, setDrawerIsOpen] = React.useState(true); useEffect(() => { if (window.innerWidth >= 640) { document.body.style.overflow = "hidden"; document.body.style.position = "relative"; return () => { document.body.style.overflow = "auto"; document.body.style.position = ""; }; } }, []); if (window.innerWidth < 640) { return ( dismissible && setDrawerIsOpen(false)} onAnimationEnd={(isOpen) => !isOpen && toggleDrawer()} dismissible={dismissible} >
{children}
); } else { return ( dismissible && setDrawerIsOpen(false)} onAnimationEnd={(isOpen) => !isOpen && toggleDrawer()} dismissible={dismissible} direction="right" >
{children}
); } }