Sheet

Sliding panel from screen edge for navigation, forms, or content

Preview

Installation

Usage

Examples

Positions

Open sheet from different screen edges.

Floating Variant

Use variant="floating" for a card-like appearance with rounded corners and margins from screen edges. Great for action sheets and share menus.

With Form

Include form elements within the sheet.

Nested Sheets

Sheets can be nested within each other. When a nested sheet opens, the parent sheet scales down slightly and shifts away from its edge, revealing a sliver of it behind the nested sheet.

Use footerVariant="inset" to give the footer a muted background with a top border, visually separating it from the content.

Detached Trigger

Place the trigger outside of the Sheet component using createSheetHandle().

Non-Modal

Pass modal={false} for a floating sheet that keeps the page interactive. The backdrop is hidden, pointer events pass through the empty area around the popup, and outside clicks don't dismiss the sheet.

Open the sheet, then try clicking or typing below. The page stays interactive and outside clicks don't close the sheet.

API Reference

The Sheet component is built on top of Base UI's Dialog. All Base UI props are supported. The documentation below only covers custom props specific to our implementation.

For the complete Base UI API, see the Base UI Dialog documentation.

Utilities

createSheetHandle

Creates a handle that connects a sheet to one or more external SheetTrigger components. Useful when the triggers need to live outside the Sheet — for example, when each row in a list has its own trigger but they all share one sheet.

Passing data from the trigger to the sheet

The handle accepts an optional <Payload> generic that types a value each trigger can pass along. The sheet reads it through a render-prop child, so you can render different content per trigger without duplicating the sheet markup.

Without the <Skill> generic, payload inside the render prop resolves to unknown.

Props

Sheet

Root component. Forwards all props to Base UI's Dialog.Root, with modified defaults for the modal prop.

Prop

SheetContent

Sliding panel container with positioning. Composes Dialog.Portal, Dialog.Viewport, and Dialog.Popup. Also renders Dialog.Backdrop when the sheet is modal. Props are forwarded to Dialog.Popup.

Prop

SheetBody

Scrollable content area within the sheet.

Prop