Sheet
---import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";---
<Sheet> <SheetTrigger asChild> <Button>Open Sheet</Button> </SheetTrigger> <SheetContent> <SheetHeader> <SheetTitle>Edit Profile</SheetTitle> <SheetDescription> Make changes to your profile here. Click save when you're done. </SheetDescription> </SheetHeader> <div class="grid gap-4 px-4"> <div class="grid gap-2"> <Label for="name">Name</Label> <Input id="name" value="Pedro Duarte" /> </div> <div class="grid gap-2"> <Label for="username">Username</Label> <Input id="username" value="@peduarte" /> </div> </div> <SheetFooter> <SheetClose asChild> <Button type="submit">Save changes</Button> </SheetClose> </SheetFooter> </SheetContent></Sheet>import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";
export function Example() { return ( <> <Sheet> <SheetTrigger asChild> <Button>Open Sheet</Button> </SheetTrigger> <SheetContent> <SheetHeader> <SheetTitle>Edit Profile</SheetTitle> <SheetDescription> Make changes to your profile here. Click save when you're done. </SheetDescription> </SheetHeader> <div className="grid gap-4 px-4"> <div className="grid gap-2"> <Label htmlFor="name">Name</Label> <Input id="name" defaultValue="Pedro Duarte" /> </div> <div className="grid gap-2"> <Label htmlFor="username">Username</Label> <Input id="username" defaultValue="@peduarte" /> </div> </div> <SheetFooter> <SheetClose asChild> <Button type="submit">Save changes</Button> </SheetClose> </SheetFooter> </SheetContent> </Sheet> </> );}Installation
pnpx starwind@latest add sheetnpx starwind@latest add sheetyarn dlx starwind@latest add sheetUsage
---import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";---
<Sheet> <SheetTrigger asChild> <Button>Open Sheet</Button> </SheetTrigger> <SheetContent> <SheetHeader> <SheetTitle>Edit Profile</SheetTitle> <SheetDescription> Make changes to your profile here. Click save when you're done. </SheetDescription> </SheetHeader> <div class="grid gap-4 px-4"> <div class="grid gap-2"> <Label for="name">Name</Label> <Input id="name" value="Pedro Duarte" /> </div> <div class="grid gap-2"> <Label for="username">Username</Label> <Input id="username" value="@peduarte" /> </div> </div> <SheetFooter> <SheetClose asChild> <Button type="submit">Save changes</Button> </SheetClose> </SheetFooter> </SheetContent></Sheet>import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";
export function Example() { return ( <> <Sheet> <SheetTrigger asChild> <Button>Open Sheet</Button> </SheetTrigger> <SheetContent> <SheetHeader> <SheetTitle>Edit Profile</SheetTitle> <SheetDescription> Make changes to your profile here. Click save when you're done. </SheetDescription> </SheetHeader> <div className="grid gap-4 px-4"> <div className="grid gap-2"> <Label htmlFor="name">Name</Label> <Input id="name" defaultValue="Pedro Duarte" /> </div> <div className="grid gap-2"> <Label htmlFor="username">Username</Label> <Input id="username" defaultValue="@peduarte" /> </div> </div> <SheetFooter> <SheetClose asChild> <Button type="submit">Save changes</Button> </SheetClose> </SheetFooter> </SheetContent> </Sheet> </> );}Composition
Use this structure for a sheet:
Sheetโโโ SheetTriggerโโโ SheetContent โโโ SheetHeader โ โโโ SheetTitle โ โโโ SheetDescription โโโ SheetFooterSheetContent includes a close button. Use SheetClose when another control also needs to close the sheet.
When to Use
Use Sheet for supporting content that slides in from an edge, such as a form or mobile navigation.
Side
Sheets can slide out from any side of the screen using the side prop.
---import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";---
<!-- Top Sheet --><Sheet> <SheetTrigger asChild> <Button variant="outline">Open Top Sheet</Button> </SheetTrigger> <SheetContent side="top"> <SheetHeader> <SheetTitle>Top Sheet</SheetTitle> <SheetDescription>This sheet opens from the top of the screen.</SheetDescription> </SheetHeader> <div class="grid gap-4 px-4"> <div class="grid gap-3"> <Label for="top-sheet-name">Name</Label> <Input id="top-sheet-name" value="Pedro Duarte" /> </div> <div class="grid gap-3"> <Label for="top-sheet-username">Username</Label> <Input id="top-sheet-username" value="@peduarte" /> </div> </div> <SheetFooter> <Button variant="default">Save changes</Button> <SheetClose asChild> <Button variant="outline">Close</Button> </SheetClose> </SheetFooter> </SheetContent></Sheet>
<!-- Use side="right", "bottom", or "left" for the other edges. -->import { Button } from "@/components/starwind/button";import { Input } from "@/components/starwind/input";import { Label } from "@/components/starwind/label";import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger,} from "@/components/starwind/sheet";
export function Example() { return ( <> {/* Top Sheet */} <Sheet> <SheetTrigger asChild> <Button variant="outline">Open Top Sheet</Button> </SheetTrigger> <SheetContent side="top"> <SheetHeader> <SheetTitle>Top Sheet</SheetTitle> <SheetDescription>This sheet opens from the top of the screen.</SheetDescription> </SheetHeader> <div className="grid gap-4 px-4"> <div className="grid gap-3"> <Label htmlFor="top-sheet-name">Name</Label> <Input id="top-sheet-name" value="Pedro Duarte" /> </div> <div className="grid gap-3"> <Label htmlFor="top-sheet-username">Username</Label> <Input id="top-sheet-username" value="@peduarte" /> </div> </div> <SheetFooter> <Button variant="default">Save changes</Button> <SheetClose asChild> <Button variant="outline">Close</Button> </SheetClose> </SheetFooter> </SheetContent> </Sheet>
{/* Use side="right", "bottom", or "left" for the other edges. */} </> );}API Reference
Styled Component API
These props are added or materially changed by the installed styled component. Standard HTML attributes remain available through the inherited interfaces noted below. Expand a prop to see named type definitions and framework-specific imports. Follow the Primitive and Runtime links for lower-level behavior props.
Sheet Trigger
Inherits button attributes.
Contains the following additional props:
asChild boolean false
- Description
- Merges the component behavior and props into its child element.
- Classification
- Wrapper prop
Sheet Close
Inherits button attributes.
Contains the following additional props:
asChild boolean false
- Description
- Merges the component behavior and props into its child element.
- Classification
- Wrapper prop
Primitive And Runtime API
Use these references when you need the lower-level behavior APIs behind Sheet.
Primitive API
Runtime API
- Drawer primitive
createDrawerfrom@starwind-ui/runtime/drawer
Changelog
View version history v2.0.2 2 releases
v2.0.2
- Named the generated aggregate default export so React and Astro tooling can identify the installed component cleanly.
v2.0.0
- Rebuilt Sheet on Starwind Runtime while preserving its styled API over the shared Drawer behavior.
- See the Drawer Primitive for the underlying unstyled anatomy and behavior API.