/** * ConnectionBanner — minimal, action-only surface for degraded realtime. * * Industry alignment (Intercom / Slack / iMessage): * * - The **initial attach** ("connecting") is invisible. The user can * already see their history (painted from the REST hydrate) and the * SDK queues anything they type until realtime attaches, so there is * nothing actionable to surface. The old "Connecting…" banner was * visual noise that flashed on every channel switch and `vt.identify()`. * * - **Reconnecting** (Ably is `suspended` / `disconnected` mid-session * and retrying) only surfaces after a 2.5 s grace window so the brief * blips that happen on a healthy network never reach the UI. When it * does appear it's a compact inline pill with a pulsing dot — not a * full-width amber banner — so it doesn't dominate the conversation. * * - **Failed** (Ably terminal failure) is the only state that asks the * user to do something, so we render an actionable card with a Retry * button instead of a passive "refresh to retry" hint. * * Anything that needs to know the SDK is mid-attach (e.g. typing * indicators) reads `store.realtimeReady` directly — this banner is * purely a user-facing surface. */ import type { JSX } from "preact"; import type { ChatStore } from "../store/chat-store"; interface ConnectionBannerProps { store: ChatStore; } export declare function ConnectionBanner({ store, }: ConnectionBannerProps): JSX.Element | null; export {};