# Sheet

> A panel that slides in from an edge; opens in 400ms and closes in 350ms on the smooth-out ease (`--panel-*`).

## Facts

- **Product**: Max
- **Family**: Overlays
- **Global**: `window.DigitalCrew.Sheet`
- **Source**: `max-agent: src/components/ui/sheet.tsx`
- **Import in the app**: `import { Sheet } from "@/components/ui/sheet";`
- **Live preview**: /design/components/sheet/preview.html
- **Page**: /design/components/sheet

## Guidelines

**Use it for** filters, record details beside a list, and the mobile navigation (the sidebar becomes a Sheet below `md`). Below `lg`, Max moves filters into a bottom sheet.

**What you provide**: `side` (`right` default, `left`, `top`, `bottom`), `SheetHeader` with `SheetTitle` and `SheetDescription`, a body (pad it 16px), and a `SheetFooter` with the main action first. `showCloseButton={false}` hides the ×.

**Anatomy**: side sheets are 75% wide up to 384px from `sm`, full height, `background` with a `border` on the inner edge.

## API

```ts
declare function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>): any;
declare function SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>): any;
declare function SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>): any;
declare function SheetContent({ className, children, side, showCloseButton, ...props }: React.ComponentProps<typeof SheetPrimitive.Content> & {
    side?: "top" | "right" | "bottom" | "left";
    showCloseButton?: boolean;
}): any;
declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): any;
declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): any;
declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>): any;
declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>): any;
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
```

## Example

```html
<div id="root" class="p-6"></div>
<script>
(function () {
  var h = React.createElement, DC = window.DigitalCrew, I = DC.Icons;
function App() {
  return h(DC.Sheet, { defaultOpen: true },
    h(DC.SheetTrigger, { asChild: true }, h(DC.Button, { variant: "outline" }, h(I.Filter), "Filters")),
    h(DC.SheetContent, { onOpenAutoFocus: function (e) { e.preventDefault(); } },
      h(DC.SheetHeader, null,
        h(DC.SheetTitle, null, "Filter prospects"),
        h(DC.SheetDescription, null, "Narrow the list, then save it as a view.")),
      h("div", { className: "grid gap-4 px-4" },
        h("div", { className: "grid gap-2" }, h(DC.Label, { htmlFor: "sh-1" }, "Job title contains"), h(DC.Input, { id: "sh-1", defaultValue: "Finance" })),
        h("div", { className: "flex items-center gap-3" }, h(DC.Checkbox, { id: "sh-2", defaultChecked: true }), h(DC.Label, { htmlFor: "sh-2", className: "font-normal" }, "Verified email only"))),
      h(DC.SheetFooter, null, h(DC.Button, null, "Show 128 prospects"), h(DC.Button, { variant: "ghost" }, "Clear all"))));
}
  ReactDOM.createRoot(document.getElementById("root")).render(h(DC.TooltipProvider, { delayDuration: 80 }, h(App)));
})();
</script>
```

## More in Overlays

- [AlertDialog](/design/components/alert-dialog.md): A blocking confirmation for irreversible or costly actions; same motion and surface as **Dialog**, no close ×, no click-outside dismissal.
- [Command](/design/components/command.md): A keyboard-first search-and-act list (cmdk); the ⌘K menu and the core of every searchable picker.
- [ConfirmDialogProvider](/design/components/confirm-dialog-provider.md): App-wide confirmations through one hook: wrap the app in `ConfirmDialogProvider`, then call `useConfirm().confirm({...})` anywhere.
- [Dialog](/design/components/dialog.md): A modal for focused tasks that need an answer before going on; opens in 250ms from 96% scale and closes in 150ms (`.t-modal`).
- [DiscardChangesDialog](/design/components/discard-changes-dialog.md): An alert dialog that asks the user to confirm throwing away unsaved edits.
- [Drawer](/design/components/drawer.md): A panel that slides in from the bottom edge (or any edge), built on vaul, with a drag handle and swipe-to-dismiss.
- [DropdownMenu](/design/components/dropdown-menu.md): A menu of actions for one object, opening from a button; 250ms in from 97%, 150ms out to 99%.
- [Popover](/design/components/popover.md): A light panel anchored to its trigger; opens in 250ms from 97% scale (`.t-dropdown`).
- [Tooltip](/design/components/tooltip.md): A short ink label on hover or focus: `foreground` fill with `background` text, 12px, 150ms in after an 80ms delay, 50ms out (`.t-tt`).
