Skip to content

shadcn.io is an independent project built on shadcn/ui

Simple Top Drawer for Ark UI

A top drawer titled Top Drawer that slides down from the top, with a short description and Close.

Open Top Drawer slides a panel down from the top. It shows Top Drawer, a short description, one line of text, and Close.

Use it for a notice that belongs at the top of the screen. A notice that must stay can be an Alert. In React, Ark UI closes it when the panel is swiped away.

Preview

Preview width

Installation

Sign in to get your install command
Free with an account. It carries your token, so the CLI installs everything in one go.

Anatomy

Drawer anatomy: grabber, title, description, content, close

Usage

<Drawer swipeDirection="up">
  <DrawerTrigger asChild>
    <Button variant="outline">Open Top Drawer</Button>
  </DrawerTrigger>
  <DrawerContent showBar={false}>
    <DrawerHeader>
      <DrawerTitle>Top Drawer</DrawerTitle>
      <DrawerDescription>
        This drawer slides down from the top.
      </DrawerDescription>
    </DrawerHeader>
    <div className="p-4">
      <p className="text-muted-foreground text-sm">
        Top drawers are useful for search bars, notifications, and quick
        action panels.
      </p>
    </div>
    <DrawerFooter>
      <DrawerClose asChild>
        <Button variant="outline">Close</Button>
      </DrawerClose>
    </DrawerFooter>
  </DrawerContent>
</Drawer>

FAQ

How does this drawer open from the top?

swipeDirection="up" on Drawer puts it on the top edge. The prop names the swipe that closes the drawer, so up docks it at the top; leave it out for a bottom drawer.

What's inside the drawer?

DrawerHeader with Top Drawer and This drawer slides down from the top, one paragraph, and DrawerFooter with Close.

How does Close work?

It's a DrawerClose, so it dismisses the drawer. Swiping it back toward its edge, Escape and a click on the overlay all close it, and focus goes back to the trigger. DrawerClose takes asChild and merges onto the Button inside it.

Is there a drag bar?

No. A side or top drawer still follows a swipe, but it doesn't draw the bar. showBar={false} on DrawerContent hides it.

How does the trigger open it?

An outline button opens the drawer. Its text, Open Top Drawer, is the accessible name. DrawerTrigger takes asChild and merges onto the one Button inside it.

When should I use a top Drawer?

When the content reads best from the top down: a search bar, a banner, a row of actions. Pick a Drawer when people should be able to drag the panel, which feels natural on touch screens. A Sheet slides in from an edge without the drag and suits desktop side panels; a Dialog is centered.

API Reference

Drawer

Sets swipeDirection="up", asChild and showBar={false}. The rest is on the Drawer page.

Button

Sets variant="outline". The rest is on the Button page.