Renders a unified "Ask" or "Display" action button for chat-adjacent surfaces (source chips, inline cards, search result rows), replacing three divergent implementations with a single density-aware primitive. ## Key Components ### Types - **`SourceActionDensity`** — Union type `'inline' | 'card' | 'list-row'` controlling visual layout variant - **`SourceActionButtonProps`** — Component props including `chatRef`, `onDiscuss`, `density`, `label`, and `className` ### Constants - **`DENSITY_STYLES`** — Static map from `SourceActionDensity` to per-variant sizing, icon dimensions, label visibility, and Tailwind class strings. Adding a new surface requires only a new entry here. ### Component - **`SourceActionButton`** — Returns `null` when `chatRef` or `onDiscuss` is absent (safe to render unconditionally). Selects `MessageSquare` or `FileText` icon based on whether `label` is `'Display'`. Delegates to the UI-Kit `