Drawer

A panel that slides in from the edge of the screen for secondary content.

When to Use

  • For detail panels or editing forms without leaving the page
  • For navigation menus on mobile
  • For filter panels or settings sidebars

Import

import { Drawer } from "orizon";

Examples

Basic

import { useState } from "react";

function App() {
  const [open, setOpen] = useState(false);

  return (
    <>
      <Button onClick={() => setOpen(true)}>Open Drawer</Button>
      <Drawer
        title="Drawer Title"
        open={open}
        onClose={() => setOpen(false)}
      >
        <p>Drawer content goes here.</p>
      </Drawer>
    </>
  );
}

Placement

<Drawer placement="left" title="Left Drawer" open={open} onClose={onClose}>
  Content from the left
</Drawer>
<Drawer placement="top" title="Top Drawer" open={open} onClose={onClose}>
  Content from the top
</Drawer>
<Drawer
  title="Edit Item"
  open={open}
  onClose={onClose}
  footer={
    <div style={{ textAlign: "right" }}>
      <Button onClick={onClose} style={{ marginRight: 8 }}>Cancel</Button>
      <Button type="primary" onClick={onSubmit}>Submit</Button>
    </div>
  }
>
  <Form>...</Form>
</Drawer>

API

DrawerProps

  • openboolean — Whether visible (controlled)
  • titleReactNode — Drawer title
  • onClose() => void — Close callback
  • placement"left" | "right" | "top" | "bottom" — Slide-in direction (default: "right")
  • widthnumber | string — Width for left/right drawers (default: 378)
  • heightnumber | string — Height for top/bottom drawers (default: 378)
  • footerReactNode — Footer content
  • size"default" | "large" — Drawer size
  • closableboolean — Show close button (default: true)
  • maskClosableboolean — Close on mask click (default: true)
  • destroyOnHiddenboolean — Unmount on close (default: false)
  • loadingboolean — Show loading state
  • pushboolean | { distance: number } — Push parent drawer
  • zIndexnumber — Z-index value
  • extraReactNode — Extra content in header