Persistent Help Chat Across Routes
The support pattern: a launcher that follows the user between pages, a thread that survives navigation, and an escalation path that keeps the transcript.
Build a support chat widget docked bottom-right. Collapsed, it is a 56px round launcher with an unread dot; opened, a 360-by-520px panel with a header — 'Support' and a minimize icon — a scrolling message log, and a composer with attachments. Keep the transcript in session storage so the thread survives route changes. Stream replies with a typing indicator before the first chunk. Render help-center citations as link chips carrying the article title. On send failure, keep the draft in the composer and show a 'Message not sent — retry' line above it. Escape closes the panel and returns focus to the launcher.