import type { ReactNode } from 'react'
import { getPortal } from './portalState'
import type {
NativePortalProps,
NativePortalHostProps,
NativePortalProviderProps,
} from './types'
export type { NativePortalProps, NativePortalHostProps, NativePortalProviderProps }
/**
* Renders children into a teleport Portal when available.
* Returns null when teleport is not set up (allows fallback handling by caller).
*/
export function NativePortal({
hostName = 'root',
children,
}: NativePortalProps): ReactNode {
const state = getPortal().state
if (state.type !== 'teleport') return null
const { Portal } = (globalThis as any).__tamagui_teleport
return {children}
}
/**
* Renders a teleport PortalHost when available.
* Returns null when teleport is not set up.
*/
export function NativePortalHost({ name }: NativePortalHostProps): ReactNode {
const state = getPortal().state
if (state.type !== 'teleport') return null
const { PortalHost } = (globalThis as any).__tamagui_teleport
return
}
/**
* Wraps children with teleport PortalProvider when available.
* Returns children as-is when teleport is not set up.
*/
export function NativePortalProvider({ children }: NativePortalProviderProps): ReactNode {
const state = getPortal().state
if (state.type !== 'teleport') return <>{children}>
const { PortalProvider } = (globalThis as any).__tamagui_teleport
return {children}
}