Skip to content
Overlays

Sheet

A panel that slides in from an edge of the viewport — navigation, filters, detail views that do not need a route of their own.

Right Sheet

Import

import {
  Sheet,
  SheetContent,
  SheetDescription,
  SheetHeader,
  SheetTitle,
  SheetTrigger,
} from "@mikenotthepope/substrateui"

Composition

Sheet
├── SheetTrigger
└── SheetContent
    └── SheetHeader
        ├── SheetTitle
        └── SheetDescription

Labels

The close button is an icon, so this string is its entire accessible name. Override one instance with the labels prop on the component, or every instance at once through LabelsProvider's sheet key — the provider is how you translate the set once instead of at each call site.

PropTypeDefaultDescription
closestring"Close"Accessible name for the corner close button.

Accessibility

Built on Base UI primitives, so focus is trapped inside the sheet while open and restored to the trigger on close. Escape closes the sheet. The backdrop is marked aria-hidden.

Every sheet must have a SheetTitle. If the title should be visually hidden, wrap it in VisuallyHidden from Base UI.

API Reference

PropTypeDefaultDescription
openbooleanControlled open state of the sheet.
onOpenChange(open: boolean) => voidCallback fired when the open state changes.
side"top" | "right" | "bottom" | "left""right"The edge of the viewport the sheet slides in from.