{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "sheet",
  "title": "sheet",
  "description": "sheet",
  "dependencies": [
    "react-aria-components"
  ],
  "registryDependencies": [
    "https://intentui.com/r/primitive",
    "https://intentui.com/r/dialog"
  ],
  "files": [
    {
      "path": "src/components/ui/sheet.tsx",
      "content": "\"use client\"\n\nimport {\n  Sheet as SheetPrimitive,\n  SheetBackdrop,\n  SheetContent as SheetContentPrimitive,\n  SheetOverlay,\n  type SheetOverlayProps,\n  type SheetProps as SheetPrimitiveProps,\n  SheetTrigger as SheetTriggerPrimitive,\n} from \"react-aria-components/Sheet\"\nimport { cx } from \"@/lib/primitive\"\nimport {\n  DialogBody,\n  DialogClose,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"./dialog\"\nimport { type DialogProps } from \"react-aria-components/Dialog\"\n\nexport const SheetTrigger = SheetTriggerPrimitive\n\nconst positionVariants = {\n  top: \"[--sheet-stack-y:8px] w-full max-w-[800px] rounded-b-4xl border-b data-[float=false]:border-x data-[float=true]:mx-2 data-[float=true]:mt-2 data-[float=true]:w-[calc(100%-1rem)] data-[float=true]:border-b-0\",\n  bottom:\n    \"[--sheet-stack-y:-8px] w-full max-w-[800px] rounded-t-4xl border-t data-[float=false]:border-x data-[float=true]:mx-2 data-[float=true]:mb-2 data-[float=true]:w-[calc(100%-1rem)] data-[float=true]:border-t-0\",\n  left: \"[--sheet-stack-x:8px] h-dvh w-3/4 border-r sm:max-w-80 data-[float=true]:my-2 data-[float=true]:ml-2 data-[float=true]:h-[calc(100dvh-1rem)] data-[float=true]:border-r-0\",\n  right:\n    \"[--sheet-stack-x:-8px] h-dvh w-3/4 border-l sm:max-w-80 data-[float=true]:my-2 data-[float=true]:mr-2 data-[float=true]:h-[calc(100dvh-1rem)] data-[float=true]:border-l-0\",\n  start:\n    \"[--sheet-stack-x:8px] rtl:[--sheet-stack-x:-8px] h-dvh w-3/4 border-e sm:max-w-80 data-[float=true]:my-2 data-[float=true]:ms-2 data-[float=true]:h-[calc(100dvh-1rem)] data-[float=true]:border-e-0\",\n  end: \"[--sheet-stack-x:-8px] rtl:[--sheet-stack-x:8px] h-dvh w-3/4 border-s sm:max-w-80 data-[float=true]:my-2 data-[float=true]:me-2 data-[float=true]:h-[calc(100dvh-1rem)] data-[float=true]:border-s-0\",\n  center: \"w-[calc(100%-2rem)] max-w-lg rounded-2xl border data-[float=true]:border-0\",\n}\n\nexport interface SheetProps\n  extends\n    Omit<SheetOverlayProps, \"children\">,\n    Pick<SheetPrimitiveProps, \"swipeAnimation\" | \"swipeAnimationRange\"> {\n  isFloat?: boolean\n  children?: DialogProps[\"children\"]\n  overlay?: Omit<SheetOverlayProps, \"children\" | \"position\">\n  overscrollPadding?: boolean\n}\n\nexport function Sheet({\n  className,\n  position = \"bottom\",\n  isFloat = false,\n  overlay,\n  children,\n  snapPoints,\n  preventDismissal,\n  ...props\n}: SheetProps) {\n  return (\n    <SheetOverlay\n      {...props}\n      {...overlay}\n      position={position}\n\n      snapPoints={snapPoints}\n      preventDismissal={preventDismissal}\n      className={cx(\"z-50\", overlay?.className)}\n    >\n      <SheetBackdrop\n        swipeAnimation=\"sheet-backdrop\"\n        className=\"bg-black/15 entering:animate-in entering:fade-in exiting:animate-out exiting:fade-out entering:duration-300 exiting:duration-300\"\n        swipeAnimationRange={snapPoints ? { start: snapPoints.length - 1 } : undefined}\n      />\n      <SheetPrimitive\n        overscrollPadding={isFloat ? false : (props.overscrollPadding ?? true)}\n        stackAnimation=\"sheet-scale-back\"\n        data-float={isFloat}\n\n        data-slot=\"sheet\"\n        className={cx(\n          \"react-aria-sheet relative box-content shrink-0 origin-top transition-transform motion-reduce:transition-none [--sheet-gap:0px] data-[float=true]:[--sheet-gap:16px] border-foreground/20 bg-overlay text-overlay-foreground shadow-lg dark:border-border\",\n          \"data-[float=true]:rounded-lg data-[float=true]:ring data-[float=true]:ring-foreground/5 dark:data-[float=true]:ring-border\",\n          positionVariants[position],\n          className\n        )}\n      >\n        {!preventDismissal && position === \"bottom\" && (\n          <div\n            aria-hidden=\"true\"\n            className=\"pointer-events-none absolute top-2 left-1/2 h-1 w-10 -translate-x-1/2 rounded-full bg-foreground/30\"\n          />\n        )}\n        <SheetContentPrimitive\n          data-slot=\"sheet-cintent\"\n          className=\"relative flex max-h-[calc(var(--visual-viewport-height)-var(--sheet-gap))] flex-col overflow-hidden outline-hidden [--gutter:--spacing(6)]\"\n        >\n          {children}\n        </SheetContentPrimitive>\n      </SheetPrimitive>\n    </SheetOverlay>\n  )\n}\n\nexport const SheetFooter = DialogFooter\nexport const SheetHeader = DialogHeader\nexport const SheetTitle = DialogTitle\nexport const SheetDescription = DialogDescription\nexport const SheetBody = DialogBody\nexport const SheetClose = DialogClose\n",
      "type": "registry:ui"
    }
  ],
  "cssVars": {
    "theme": {
      "color-overlay": "var(--overlay)",
      "color-overlay-foreground": "var(--overlay-foreground)",
      "animate-sheet-backdrop": "sheet-backdrop 300ms linear both",
      "animate-sheet-scale-back": "sheet-scale-back 300ms ease-out both"
    },
    "light": {
      "overlay": "oklch(1 0 0)",
      "overlay-foreground": "oklch(0.141 0.005 285.823)"
    },
    "dark": {
      "overlay": "oklch(0.210 0.006 285.885)",
      "overlay-foreground": "oklch(0.985 0 0)"
    }
  },
  "css": {
    "@keyframes sheet-backdrop": {
      "from": {
        "opacity": "0"
      },
      "to": {
        "opacity": "1"
      }
    },
    "@keyframes sheet-scale-back": {
      "to": {
        "transform": "translate(var(--sheet-stack-x, 0px), var(--sheet-stack-y, 0px)) scale(0.95)"
      }
    },
    "@supports not (animation-timeline: view())": {
      ".react-aria-sheet[data-has-descendants]": {
        "transform": "translate(var(--sheet-stack-x, 0px), var(--sheet-stack-y, 0px)) scale(0.95)"
      }
    }
  },
  "type": "registry:ui"
}