@vladyoslav/drawer
Draggable drawer component for React.
Basic Drawer
This is a minimal example of using the Drawer! Easy enough, right?
import {Drawer} from '@vladyoslav/drawer'
<Drawer.Root>
<Drawer.Trigger>Open Drawer</Drawer.Trigger>
<Drawer.Portal>
<Drawer.Overlay />
<Drawer.Content>
...
</Drawer.Content>
</Drawer.Portal>
</Drawer.Root>With scaled background
To enable background scaling, add the shouldScaleBackground prop to the Drawer.Root and
vladyoslav-drawer-wrapper="" attribute to the root element!
import {Drawer} from '@vladyoslav/drawer'
<main vladyoslav-drawer-wrapper="">
<Drawer.Root shouldScaleBackground>
...
</Drawer.Root>
</main>With scrollable content
It's pretty easy to make the content in the Drawer scrollable, just add the overflow css rule to the container!
Try it on mobile!
import {Drawer} from '@vladyoslav/drawer'
// Example with Tailwind CSS
<Drawer.Root>
<Drawer.Content>
<div className="overflow-y-auto">
...
</div>
</Drawer.Content>
</Drawer.Root>With snap points
You can add multiple points to which the Drawer should snap using the snapPoints prop. It even supports inertia!
import {Drawer} from '@vladyoslav/drawer'
<Drawer.Root snapPoints={[100, '50%', '100%']}>
...
</Drawer.Root>Non-blocking
Using modal prop you can even create a Drawer that doesn't block interaction with background elements!
import {Drawer} from '@vladyoslav/drawer'
<Drawer.Root dismissible={false}>
...
</Drawer.Root>Non-dismissible
Or a Drawer that cannot be closed simply by clicking on the background or swiping down using dismissible prop!
import {Drawer} from '@vladyoslav/drawer'
<Drawer.Root dismissible={false}>
...
</Drawer.Root>And that's not all the features! Check out the docs for more info!
Read the Docs