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
Installation
Add the component with the CLI. It copies the files in and installs anything they depend on.
npx vinyaas add sheetUsage
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.
| Name | Type | Default | Description |
|---|---|---|---|
open | boolean | — | Controlled open state. |
defaultOpen | boolean | false | Opens 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. |
showCloseButton | boolean | true | On SheetContent, shows the built-in Close control. |
className | string | — | Merged onto the part with cn. |
Accessibility
- The panel is
role="dialog"andaria-modal="true", with title and description wired througharia-labelledbyandaria-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.