shadcn.io is an independent project built on shadcn/ui
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, Base UI closes it when the panel is swiped away.
Installation
Anatomy

Usage
<Drawer swipeDirection="up">
<DrawerTrigger render={<Button variant="outline" />}>
Open Top Drawer
</DrawerTrigger>
<DrawerContent>
<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 render={<Button variant="outline" />}>Close</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.
The Button goes in the render prop of DrawerClose.
Is there a drag bar?
No. A side or top drawer still follows a swipe, but it doesn't draw the bar.
The bar stays off unless Drawer sets showSwipeHandle.
How does the trigger open it?
An outline button opens the drawer. Its text, Open Top Drawer, is the accessible name.
The Button goes in the render prop of DrawerTrigger.
API Reference
Drawer
Sets swipeDirection="up". The rest is on the Drawer page.
Button
Sets variant="outline". The rest is on the Button page.





