apps/v4/content/docs/components/base/drawer.mdx
Drawer is built on top of Vaul by emilkowalski.
npx shadcn@latest add drawer
<Step>Install the following dependencies:</Step>
npm install vaul
<Step>Copy and paste the following code into your project.</Step>
<ComponentSource name="drawer" title="components/ui/drawer.tsx" styleName="base-nova" />
<Step>Update the import paths to match your project setup.</Step>
</Steps> </TabsContent> </CodeTabs>import {
Drawer,
DrawerClose,
DrawerContent,
DrawerDescription,
DrawerFooter,
DrawerHeader,
DrawerTitle,
DrawerTrigger,
} from "@/components/ui/drawer"
<Drawer>
<DrawerTrigger>Open</DrawerTrigger>
<DrawerContent>
<DrawerHeader>
<DrawerTitle>Are you absolutely sure?</DrawerTitle>
<DrawerDescription>This action cannot be undone.</DrawerDescription>
</DrawerHeader>
<DrawerFooter>
<Button>Submit</Button>
<DrawerClose>
<Button variant="outline">Cancel</Button>
</DrawerClose>
</DrawerFooter>
</DrawerContent>
</Drawer>
Keep actions visible while the content scrolls.
<ComponentPreview styleName="base-nova" name="drawer-scrollable-content" />Use the direction prop to set the side of the drawer. Available options are top, right, bottom, and left.
You can combine the Dialog and Drawer components to create a responsive dialog. This renders a Dialog component on desktop and a Drawer on mobile.
To enable RTL support in shadcn/ui, see the RTL configuration guide.
<ComponentPreview styleName="base-nova" name="drawer-rtl" direction="rtl" />See the Vaul documentation for the full API reference.