{ "name": "portal", "type": "registry:component", "files": [ { "path": "components/portal.tsx", "type": "registry:component", "content": "\"use client\";\n\nimport { Slot as SlotPrimitive } from \"radix-ui\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\ntype SlotProps = React.ComponentProps;\n\ninterface PortalProps extends SlotProps {\n container?: Element | DocumentFragment | null;\n}\n\nfunction subscribe() {\n return () => {};\n}\n\nfunction getSnapshot() {\n return true;\n}\n\nfunction getServerSnapshot() {\n return false;\n}\n\nfunction Portal(props: PortalProps) {\n const { container: containerProp, ...portalProps } = props;\n\n const mounted = React.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n const container =\n containerProp ?? (mounted ? globalThis.document?.body : null);\n\n if (!container) return null;\n\n return ReactDOM.createPortal(\n ,\n container,\n );\n}\n\nexport type { PortalProps };\nexport { Portal };\n", "target": "" } ] }