pro-ui

Drawer

Slide-in panel from left, right, or bottom. Ideal for filter panels, mobile nav, and detail views.

Import

import { Drawer, Button } from '@dangbt/pro-ui'
import { DialogTrigger } from 'react-aria-components'

Basic drawer

<DialogTrigger>
  <Button variant="outline">Open Filters</Button>
  <Drawer title="Filter Options" placement="right">
    {/* filter form */}
  </Drawer>
</DialogTrigger>

Placements

<Drawer placement="right">...</Drawer>   {/* default */}
<Drawer placement="left">...</Drawer>
<Drawer placement="bottom">...</Drawer>

Controlled

const [open, setOpen] = useState(false)
 
<Button onPress={() => setOpen(true)}>View Details</Button>
 
<Drawer
  isOpen={open}
  onOpenChange={setOpen}
  title="User Details"
  placement="right"
  size="lg"
>
  {/* detail content */}
</Drawer>

Props

PropTypeDefaultDescription
placement'left' | 'right' | 'bottom''right'Slide-in edge
size'sm' | 'md' | 'lg''md'Width (or height for bottom)
titlestringDrawer header title
withOverlaybooleantrueShow backdrop overlay
isOpenbooleanControlled open state
onOpenChange(open: boolean) => voidCalled on open/close
childrenReactNodeDrawer body

On this page