{ "name": "presence", "type": "registry:component", "files": [ { "path": "components/presence.tsx", "type": "registry:component", "content": "\"use client\";\n\nimport * as React from \"react\";\n\ninterface PresenceProps {\n children:\n | React.ReactElement\n | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nfunction Presence({ children, present }: PresenceProps) {\n const [mounted, setMounted] = React.useState(present);\n const prevPresentRef = React.useRef(present);\n\n React.useEffect(() => {\n const wasMounted = prevPresentRef.current;\n const hasMounted = present;\n\n if (hasMounted) {\n setMounted(true);\n } else if (wasMounted && !hasMounted) {\n setMounted(false);\n }\n\n prevPresentRef.current = present;\n }, [present]);\n\n if (!mounted) return null;\n\n return typeof children === \"function\"\n ? children({ present: mounted && present })\n : children;\n}\n\nexport { Presence };\n", "target": "" } ], "dependencies": [ "@base-ui/react" ] }