Getting Started
Components52
- Accordion
- Alert
- Alert Dialog
- Attachment
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Checkbox
- Collapsible
- Command
- Context Menu
- Data Table
- Dialog
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Item
- Kbd
- Label
- Marker
- Menubar
- Message
- Message Scroller
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toggle
- Toggle Group
- Tooltip
Extends the Dialog component to display content that complements the main content of the screen.
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 SheetDemo() {
return (
<Sheet>
<SheetTrigger render={<Button variant="secondary" />}>Open</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 auto-rows-min gap-4 px-4">
<div className="flex flex-col gap-1.5">
<Label htmlFor="sheet-name">Name</Label>
<Input id="sheet-name" defaultValue="Ada Lovelace" />
</div>
<div className="flex flex-col gap-1.5">
<Label htmlFor="sheet-username">Username</Label>
<Input id="sheet-username" defaultValue="@ada" />
</div>
</div>
<SheetFooter>
<Button>Save changes</Button>
<SheetClose render={<Button variant="outline" />}>Close</SheetClose>
</SheetFooter>
</SheetContent>
</Sheet>
)
}Installation#
pnpm dlx shadcn@latest add https://ui.ikramhasan.com/r/sheet.json
Usage#
import {
Sheet,
SheetClose,
SheetContent,
SheetDescription,
SheetFooter,
SheetHeader,
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet"<Sheet>
<SheetTrigger>Open</SheetTrigger>
<SheetContent>
<SheetHeader>
<SheetTitle>Are you absolutely sure?</SheetTitle>
<SheetDescription>This action cannot be undone.</SheetDescription>
</SheetHeader>
</SheetContent>
</Sheet>Examples#
Sides#
import { Button } from "@/components/ui/button"
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet"
export function SheetSides() {
return (
<div className="flex flex-wrap items-center gap-2">
{(["top", "right", "bottom", "left"] as const).map((side) => (
<Sheet key={side}>
<SheetTrigger
render={<Button variant="secondary" className="capitalize" />}
>
{side}
</SheetTrigger>
<SheetContent side={side}>
<SheetHeader>
<SheetTitle>
{side[0].toUpperCase() + side.slice(1)} sheet
</SheetTitle>
<SheetDescription>
Slides in from the {side} edge. Press Escape to close.
</SheetDescription>
</SheetHeader>
</SheetContent>
</Sheet>
))}
</div>
)
}API Reference#
Sheet is built on the Base UI Sheet primitive. See the Base UI documentation for every prop.