A footer UI component that renders a "Join Waitlist" button, routing navigation through the unified `ChatRuntimeContext` navigation hook when available, with a fallback to the embed-shim router. ## Key Components ### `FooterWaitlistButtonProps` Interface with a single optional `className` prop for styling overrides. ### `FooterWaitlistButton` Client-side React component that: - Resolves the active navigation strategy at runtime via `executeNavigationImperative` - Uses `runtime.navigation.navigate` when a `ChatRuntimeContext` is mounted (inherits cross-platform new-tab decisions, embed-mode handling, same-URL re-scroll, and future host nav rules) - Falls back to the embed-shim's `router.push` when no runtime context is present, keeping the library usable without requiring full chat-runtime setup - Navigates to `/waitlist#top`, where `#top` anchors to an explicit `
` at the top of `
` for reliable cross-browser scroll behavior ## Usage Example ```typescript import { FooterWaitlistButton } from './footer-waitlist-button'; // Basic usage inside a footer layout export function SiteFooter() { return (
); } // Without ChatRuntimeContext — falls back to embed-shim router.push export function StandaloneEmbed() { return (
); } ``` ## Navigation Resolution ```mermaid graph TD A[Button Click] --> B{ChatRuntimeContext mounted?} B -->|Yes| C[runtime.navigation.navigate] B -->|No| D[embed-shim router.push] C --> E[/waitlist#top] D --> E ``` > **Source:** [`footer-waitlist-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/footer-waitlist-button.tsx)