Skip to content

Drawer

Overlay panel that slides in from the screen edge.

Basic Usage

Control visibility with visible and onClose. Defaults to sliding in from the right.

tsx
import { Drawer, Button } from '@airo-ui/react'
import { useState } from 'react'

function Demo() {
  const [visible, setVisible] = useState(false)

  return (
    <div>
      <Button variant="primary" onClick={() => setVisible(true)}>Right Drawer</Button>
      <Drawer
        visible={visible}
        title="Drawer Title"
        onClose={() => setVisible(false)}
      >
        This is the drawer content area.
      </Drawer>
    </div>
  )
}

Slide from Left

tsx
<Drawer
  visible={visible}
  placement="left"
  title="Left Drawer"
  onClose={() => setVisible(false)}
>
  This panel slides in from the left.
</Drawer>

API

Props

NameTypeDefaultDescription
visiblebooleanfalseVisibility
placement'left' | 'right' | 'top' | 'bottom''right'Slide direction
widthstring'300px'Left/right drawer width
heightstring'300px'Top/bottom drawer height
titlestring--Title
closablebooleantrueShow close button
maskClosablebooleantrueClose on mask click
childrenReact.ReactNode--Body content
onOpen() => void--Drawer opened callback
onClose() => void--Drawer closed callback

Interaction

  • Mask fade-in + panel ease-out slide
  • Mask click closes
  • Esc key closes
  • Body scroll locked on open

MIT License