# Sheet stack

Nested sheets that stack with depth, drag to dismiss, and become stacked dialogs on wide screens.

Integration notes: SheetTrigger is not part of the runtime. Open a Sheet through useSheetStack().push(id) under SheetStack.

- ID: `sheet-stack`
- Import: `animui/sheet-stack`
- Category: Special
- Runtime exports: `SheetStack`, `Sheet`, `useSheetStack`
- Declaration: `types/pro/sheet-stack.d.ts`
- Type provenance: reconstructed-from-docs-and-runtime
- Related: bottom-sheet, drawer, dialog, settings-page, multi-step-form

Unavailable exports: SheetTrigger. Use only the runtime exports above.

```tsx
import { SheetStack } from 'animui/sheet-stack';
```

This import example is not a complete render recipe: read the declaration below and its local references for required props, data, callbacks and provider context. Use `animui info sheet-stack` to resolve the local declaration graph. Global setup is in `llms.txt`.

```ts
/** Reconstructed from saved Arc documentation and runtime binding evidence; original TypeScript source was unavailable. */
import type { ComponentType, ReactNode, CSSProperties, Ref, ButtonHTMLAttributes, HTMLAttributes, ReactElement } from 'react';

export interface SheetStackProps { children: ReactNode; stack?: string[]; defaultStack?: string[]; onStackChange?: (stack: string[]) => void; mode?: 'auto' | 'sheet' | 'dialog'; breakpoint?: number; contained?: boolean; }
export interface SheetProps { id: string; title: string; description?: string; children: ReactNode; footer?: ReactNode; backLabel?: string; dismissible?: boolean; className?: string; ref?: Ref<HTMLDivElement>; }
export interface SheetStackController { stack: string[]; push: (id: string) => void; pop: () => void; popTo: (id: string) => void; close: () => void; }
export declare function useSheetStack(): SheetStackController;

export declare const SheetStack: ComponentType<SheetStackProps>;
export declare const Sheet: ComponentType<SheetProps>;

export default SheetStack;
```
