Thin compatibility wrapper that forwards chat-rendered navigation link clicks to the unified `executeNavigation` primitive. ## Key Components ### `ChatNavClickInput` Interface describing the navigation target passed to the handler: | Field | Type | Description | |---|---|---| | `href` | `string` | Destination URL | | `path` | `string \| null` | Optional soft-nav path override | | `targetPlatform` | `string \| null` | Target rendering platform hint | ### `handleChatNavClick` Delegates directly to [`executeNavigation`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/execute-navigation.ts), preserving the call shape expected by existing chat callers (chip blocks, ``, ``). Returns a `boolean` indicating whether the click was handled. > **Deprecated.** New code should call `executeNavigation` directly. The full decision tree (empty-href no-op, modifier/non-primary passthrough, new-tab, same-tab soft-nav with fallback) lives exclusively in `execute-navigation.ts`. ## Usage Example ```typescript import { handleChatNavClick } from './nav-click-handler' import { useRouter } from 'next/navigation' const router = useRouter() handleChatNavClick( e, runtime, { href, path: '/dashboard', targetPlatform: 'web' }, router.push, // fallback for runtimes without navigation.navigate ) } > Dashboard ``` The `fallbackNavigate` parameter accepts `useRouter().push` for same-origin soft-navigation when the `ChatRuntime` does not wire a `navigation.navigate` handler.