Back to Shadcn Ui

Drawer

apps/v4/content/docs/components/base/drawer.mdx

latest2.3 KB
Original Source
<ComponentPreview styleName="base-nova" name="drawer-demo" />

About

Drawer is built on top of Vaul by emilkowalski.

Installation

<CodeTabs> <TabsList> <TabsTrigger value="cli">Command</TabsTrigger> <TabsTrigger value="manual">Manual</TabsTrigger> </TabsList> <TabsContent value="cli">
bash
npx shadcn@latest add drawer
</TabsContent> <TabsContent value="manual"> <Steps className="mb-0 pt-2">

<Step>Install the following dependencies:</Step>

bash
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>

Usage

tsx
import {
  Drawer,
  DrawerClose,
  DrawerContent,
  DrawerDescription,
  DrawerFooter,
  DrawerHeader,
  DrawerTitle,
  DrawerTrigger,
} from "@/components/ui/drawer"
tsx
<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>

Examples

Scrollable Content

Keep actions visible while the content scrolls.

<ComponentPreview styleName="base-nova" name="drawer-scrollable-content" />

Sides

Use the direction prop to set the side of the drawer. Available options are top, right, bottom, and left.

<ComponentPreview styleName="base-nova" name="drawer-sides" />

Responsive Dialog

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.

<ComponentPreview styleName="base-nova" name="drawer-dialog" />

RTL

To enable RTL support in shadcn/ui, see the RTL configuration guide.

<ComponentPreview styleName="base-nova" name="drawer-rtl" direction="rtl" />

API Reference

See the Vaul documentation for the full API reference.