'use client'; import * as React from 'react'; import { loadRemote, registerRemotes } from './federation'; export interface HostComponentProps

> { name: string; remote?: string; props?: P; fallback?: React.ReactNode; } export function useHostComponent

>( name: string, remote?: string ): React.ComponentType

| null { const [Component, setComponent] = React.useState | null>( null ); React.useEffect(() => { if (!remote) return; const remoteName = 'apna_host_design'; registerRemotes([{ name: remoteName, entry: remote }], { force: true }); let cancelled = false; void loadRemote<{ default: React.ComponentType

}>( `${remoteName}/${name}` ).then((module) => { if (!cancelled) setComponent(() => module.default); }); return () => { cancelled = true; }; }, [name, remote]); return Component; } export function HostComponent

>({ name, remote, props, fallback = null, }: HostComponentProps

) { const Component = useHostComponent

(name, remote); return Component ? : <>{fallback}; }