@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