Sheet

A side modal for settings, details, filters, and mobile navigation.

Overview

Sheet is a modal panel that slides in from an edge of the viewport. Prefer it for forms, record details, filters, and mobile navigation. Use Dialog for centered tasks and Alert Dialog for destructive confirmations.

Preview

Customize

Side
Show Close Button

Installation

Add the component with the CLI. It copies the files in and installs anything they depend on.

npx vinyaas add sheet

Usage

import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, } from "@/components/ui/sheet"; export function InviteSheet() { return ( <Sheet> <SheetTrigger> <Button variant="outline">Invite teammate</Button> </SheetTrigger> <SheetContent side="right"> <SheetHeader> <SheetTitle>Invite to workspace</SheetTitle> <SheetDescription> Send an email invite. Members can join projects after they accept. </SheetDescription> </SheetHeader> <div className="grid gap-2"> <Label htmlFor="email">Email</Label> <Input id="email" type="email" placeholder="priya@company.com" /> </div> <SheetFooter> <SheetClose> <Button variant="outline">Cancel</Button> </SheetClose> <Button>Send invite</Button> </SheetFooter> </SheetContent> </Sheet> ); }

Examples

Invite teammate

A right sheet for a short invite form with role selection and footer actions.

Sides

Each edge supports a different workflow—profile, docs, status, and cart.

Project settings

A settings form sheet composing Label, Input, Select, Switch, and Button.

vinyaas-web

Private · us-east-1

Deployment details

Inspect a deployment from a list—status, metadata, logs, and promote actions.

Recent deployments

Production
  • SK

    vinyaas-web

    feat: sheet polish

  • PR

    docs

    fix: nav overlap

  • RK

    marketing

    chore: bump deps

Filters

A board filter sheet with status, priority checkboxes, and an assigned-to-me switch.

Issue tracker

248 open · Team board

Mobile navigation

A left sheet for workspace navigation with sections and a signed-in user footer.

Vinyaas

Acme workspace

API

Other attributes for the underlying element are passed through.

NameTypeDefaultDescription
openboolean—Controlled open state.
defaultOpenbooleanfalseOpens the sheet on first render when uncontrolled.
onOpenChange(open: boolean) => void—Called when the sheet opens or closes.
side"left" | "right" | "top" | "bottom""right"On SheetContent, sets the slide-in edge and layout.
showCloseButtonbooleantrueOn SheetContent, shows the built-in Close control.
classNamestring—Merged onto the part with cn.

Accessibility

  • The panel is role="dialog" and aria-modal="true", with title and description wired through aria-labelledby and aria-describedby.
  • Focus moves into the sheet on open (usually the Close control) and returns to the trigger on close.
  • Tab and Shift+Tab cycle inside the sheet while it is open.
  • Escape and overlay click close the sheet. The built-in Close button has an accessible name.