Form Drawer

drawer-ui header body footer

Side-opening drawer with a sticky action row. The most common drawer shape in admin tools: header names the task, body scrolls the form, footer pins Cancel/Save so they stay reachable without scrolling.

When to use

Create/edit flows that fit in one screen's worth of fields. A modal is fine for 2–3 fields, a full page for 20+ fields. The drawer occupies the middle ground and keeps the list context visible behind it.

Simple create form

3–5 fields with primary + cancel actions. The default shape for "+ New X" triggers.

Edit form with destructive action

Edit drawers pair a primary action with a destructive one in the footer. Delete sits on the left, Save on the right — separated by the spacer.

Quarterly planning doc

Long form — scroll body, sticky footer

The footer stays visible even when the form body overflows. This is why the sticky-footer pattern matters — users shouldn't have to scroll to find "Save".

General

Limits

Access

Notifications

Anatomy

<drawer-ui text="New project" side="right" size="md"> <!-- scrollable body --> <section slot="body"> <col-ui gap="3"> <field-ui label="Name"> <input-ui required></input-ui> </field-ui> <field-ui label="Description"> <textarea-ui></textarea-ui> </field-ui> </col-ui> </section> <!-- sticky footer — single-cluster --> <footer slot="footer"> <span slot="action"> <button-ui text="Cancel" variant="ghost"></button-ui> <button-ui text="Create" variant="primary"></button-ui> </span> </footer> <!-- sticky footer — dual-cluster (destructive left, primary right) --> <footer slot="footer"> <span slot="action-leading"> <button-ui text="Delete" color="danger"></button-ui> </span> <span slot="action"> <button-ui text="Cancel" variant="ghost"></button-ui> <button-ui text="Save changes" variant="primary"></button-ui> </span> </footer> </drawer-ui>

Rules