{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "portal",
  "title": "Portal",
  "description": "Where floating layers mount, so menus and dialogs can sit inside a themed container.",
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/ikada/lib/ikada/portal.tsx",
      "content": "\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\n/**\n * Where floating layers mount. Defaults to document.body. Wrap a subtree in\n * `PortalContainer` to keep its menus, selects, popovers and dialogs inside an\n * element, e.g. a `data-theme` scope that must theme them (the playground shows\n * light and dark side by side this way). The container needs `position: relative`.\n */\nconst PortalContext = createContext<HTMLElement | null>(null);\nexport const PortalContainer = PortalContext.Provider;\nexport const usePortalContainer = (): HTMLElement | undefined => useContext(PortalContext) ?? undefined;\n",
      "type": "registry:lib",
      "target": "@components/ikada/lib/portal.tsx"
    }
  ],
  "categories": [
    "utilities"
  ],
  "type": "registry:lib"
}