sheet

Sheet

Slides a panel in from a screen edge over the page, with a header, a scrolling body and a footer, for carts, filters and menus.

States: Default

Parts

PartFileDoes
SheetSheet.vueGroups all parts of the sheet, a panel that slides in from an edge.
SheetBodySheetBody.vueHolds the sheet's main content and scrolls it, keeping the header and footer in view.
SheetCloseSheetClose.vueCloses the sheet.
SheetContentSheetContent.vueHolds what the sheet shows while open.
SheetDescriptionSheetDescription.vueExplains the purpose of the sheet below its title.
SheetFooterSheetFooter.vueHolds the actions at the bottom of the sheet.
SheetHeaderSheetHeader.vueGroups the title and description at the top of the sheet.
SheetTitleSheetTitle.vueNames the sheet.
SheetTriggerSheetTrigger.vueOpens the sheet.

Anatomy

<Sheet>
  <SheetTrigger />
  <SheetContent>
    <SheetHeader>
      <SheetTitle />
      <SheetDescription />
    </SheetHeader>
    <SheetBody />
    <SheetFooter>
      <SheetClose />
    </SheetFooter>
  </SheetContent>
</Sheet>

Styling

PartRecipe
SheetBodysheet-body
SheetContentsheet-content
SheetContentsheet-overlay
SheetDescriptionsheet-description
SheetFootersheet-footer
SheetHeadersheet-header
SheetTitlesheet-title

Install

Writes 11 files into components/ui/sheet/. For agents, npx @frontic/ui docs sheet prints this reference as markdown; the MCP server serves the same.

Installs with it
button
npm packages
@lucide/vue
@vueuse/core
class-variance-authority
reka-ui

Built from

API reference

Sheet Sheet.vue

Groups all parts of the sheet, a panel that slides in from an edge.

PropTypeDefault
openboolean—
defaultOpenbooleanfalse
modalbooleantrue
unmountOnHidebooleantrue
EventPayload
update:openvalue: boolean
SlotSlot props
default{ open: boolean; close: () => void; }

SheetBody SheetBody.vue

SheetClose SheetClose.vue

SheetContent SheetContent.vue

SheetDescription SheetDescription.vue

SheetFooter SheetFooter.vue

SheetHeader SheetHeader.vue

SheetTitle SheetTitle.vue

SheetTrigger SheetTrigger.vue

Example