Docs
sheet

sheet

Extends the Dialog component to display content that complements the main content of the screen.

Installation

npx duck-ui@latest add sheet
npx duck-ui@latest add sheet

Usage

import {
  Sheet,
  SheetContent,
  SheetDescription,
  SheetHeader,
  SheetTitle,
  SheetTrigger,
} from "@/components/ui/sheet"
import {
  Sheet,
  SheetContent,
  SheetDescription,
  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. This will permanently delete your account
        and remove your data from our servers.
      </SheetDescription>
    </SheetHeader>
  </SheetContent>
</Sheet>
<Sheet>
  <SheetTrigger>Open</SheetTrigger>
  <SheetContent>
    <SheetHeader>
      <SheetTitle>Are you absolutely sure?</SheetTitle>
      <SheetDescription>
        This action cannot be undone. This will permanently delete your account
        and remove your data from our servers.
      </SheetDescription>
    </SheetHeader>
  </SheetContent>
</Sheet>

Examples

Side

Use the side property to <SheetContent /> to indicate the edge of the screen where the component will appear. The values can be top, right, bottom or left.

Size

You can adjust the size of the sheet using CSS classes:

<Sheet>
  <SheetTrigger>Open</SheetTrigger>
  <SheetContent className="w-[400px] sm:w-[540px]">
    <SheetHeader>
      <SheetTitle>Are you absolutely sure?</SheetTitle>
      <SheetDescription>
        This action cannot be undone. This will permanently delete your account
        and remove your data from our servers.
      </SheetDescription>
    </SheetHeader>
  </SheetContent>
</Sheet>
<Sheet>
  <SheetTrigger>Open</SheetTrigger>
  <SheetContent className="w-[400px] sm:w-[540px]">
    <SheetHeader>
      <SheetTitle>Are you absolutely sure?</SheetTitle>
      <SheetDescription>
        This action cannot be undone. This will permanently delete your account
        and remove your data from our servers.
      </SheetDescription>
    </SheetHeader>
  </SheetContent>
</Sheet>

API Reference

Sheet

  • closeButton (boolean, optional, default: true): Whether to show the default close button on the sheet.
  • ...props (React.ComponentPropsWithoutRef<typeof SheetPrimitive.Root>): All other props are forwarded to the underlying Sheet root component.

Behavior: Renders the root container of the sheet dialog. Manages open/close state and displays the sheet overlay.


SheetTrigger

  • props (React.ComponentPropsWithoutRef<typeof DialogTrigger>): All props are forwarded to the trigger element.

Behavior: Renders the element that toggles the sheet open/close state. Acts as the trigger button or element.


SheetContent

  • renderOnce (boolean, optional, default: false): Controls whether the content should only render once (currently unused).
  • overlay (string, optional, default: 'default'): Animation overlay style variant.
  • closedby (string, optional, default: 'any'): Close behavior (currently unused).
  • side (string, optional, default: 'right'): The side from which the sheet slides in.
  • ...props (DialogContentProps & VariantProps<typeof AnimSheetVariants>): Other props forwarded to the sheet content container.

Behavior: Renders the animated content area of the sheet with overlay and slide-in animations. Wraps children in a vertical flex container with spacing.


SheetHeader

  • props (React.HTMLProps<HTMLDivElement>): Other standard div props.

Behavior: Renders a vertical flex container for the sheet header, typically used for titles or controls.


SheetFooter

  • props (React.HTMLProps<HTMLDivElement>): Other standard div props.

Behavior: Renders a flex container for the sheet footer, stacked on small screens and horizontal with spacing on larger screens.


SheetTitle

  • props (React.HTMLProps<HTMLHeadingElement>): Other heading element props.

Behavior: Renders the heading/title element inside the sheet header.


SheetDescription

  • props (React.HTMLProps<HTMLParagraphElement>): Other paragraph element props.

Behavior: Renders a description paragraph inside the sheet.


SheetClose

  • props (React.ComponentPropsWithoutRef<typeof DialogClose>): Props forwarded to the close button.

Behavior: Renders a button that closes the sheet when clicked.