Drawer

A bottom sheet that slides up from the bottom of the viewport. Great for mobile-friendly interactions and supplementary content.

Bottom Drawer

<Drawer>
  <DrawerTrigger asChild>
    <Button variant="outline">Open Drawer</Button>
  </DrawerTrigger>
  <DrawerContent>
    <DrawerHeader>
      <DrawerTitle>Move to folder</DrawerTitle>
      <DrawerDescription>
        Select a destination folder for this item.
      </DrawerDescription>
    </DrawerHeader>
    <div className="p-4">
      <p className="text-sm text-muted-foreground">
        Drawer body content goes here.
      </p>
    </div>
  </DrawerContent>
</Drawer>

API Reference

PropTypeDefaultDescription
openbooleanControlled open state of the drawer.
onOpenChange(open: boolean) => voidCallback fired when the open state changes.

Accessibility

Built on Vaul, which implements focus trapping and restoration and closes on Escape. The backdrop is marked aria-hidden.

Every drawer must have a DrawerTitle. If the title should be visually hidden, wrap it in VisuallyHidden from Radix so the accessible name is still announced.