UIIcons

Sheet

A panel that slides in from the edge of the screen to surface focused content or contextual actions.

Sheet

Installation

pnpm dlx stera-ui@latest add sheet

Composition

Use the following composition to build a Sheet:

Sheet
├── SheetTrigger
└── SheetPopup
    ├── SheetHeader
    │   ├── SheetTitle
    │   └── SheetDescription
    ├── SheetContent       (scrollable region)
    └── SheetFooter
        └── SheetClose

Examples

Bottom Sheet

Bottom Sheet

A bottom-anchored sheet renders a drag handle automatically and dismisses on swipe-down.

Snap points

Sheet Snap Points

Pass snapPoints to make a bottom sheet snap between heights. Values can be fractions of the viewport (01), pixel values (>1 or "148px"), or rem strings.

Nested Sheets

Nest Sheets

Nesting works from any side. A right-anchored sheet tucks its parent toward the edge as the child slides in.

Nest Side Sheets

Indent

TodayWednesday, June 5
Inbox
Drafts
Archive
Trash
Sheet Indent

Wrap your app in SheetProvider and place a SheetIndentBackground behind SheetIndent. When any sheet inside the provider opens, the indented content scales back to reveal the background — the iOS-style stacked effect. SheetIndent exposes --drawer-swipe-progress (0–1) for swipe-linked motion.

Swipe to open

Sheet Swipe Area

Add a SheetSwipeArea — an invisible, fixed strip along the screen edge — so the sheet can be opened by swiping in from that edge on touch devices. Base UI manages the gesture and the strip's touch-action; you position it (e.g. fixed inset-y-0 right-0 w-4).

API Reference

Built on Base UI's Drawer primitive — see the full API reference there.

Sheet

PropTypeDefault
side"right" | "left" | "top" | "bottom""right"
swipeDirection"up" | "down" | "left" | "right"derived from side
snapPoints(number | string)[]
snapPointnumber | string | null
onSnapPointChange(snapPoint, details) => void
openboolean
onOpenChange(open, details) => void
modalboolean | "trap-focus"true

SheetPopup

PropTypeDefault
showCloseButtonbooleantrue

SheetTrigger

PropTypeDescription
renderReactElementRender prop for the trigger element

SheetClose

PropTypeDescription
renderReactElementRender prop for the close element