Mingo's chat empty-state screen, rendering a greeting, feature grid, optional "New to OpenFrame?" promo notification, and quick-action chips for new and returning users. ## Key Components ### Exported Types - **`MingoWelcomePromo`** — Config object (`title`, `description`) for the one-time "New to OpenFrame?" notification card. Pass `null` to suppress. - **`MingoQuickAction`** — Descriptor for an extra quick-action chip: `id`, `label`, optional `icon`, `variant` (`'primary'` | `'outline'`), `onClick`, and a `prompt` string previewed on hover. - **`MingoWelcomeProps`** — Full props surface for `MingoWelcome`. ### Main Export - **`MingoWelcome`** — Primary empty-state component. Handles three distinct states: - **New user** — Greeting, feature grid, optional promo notification, and quick-action chips. - **Returning user** — Replaces greeting/grid with `dialogHistory` content; chips remain pinned. - **Loading / Error** — Renders `MingoChatHistorySkeleton` or a retry block while history resolves. ### Key Behaviors - **Promo persistence** — Dismissal stored in `localStorage` or `sessionStorage` (SSR-safe; hydrated after mount). - **Scroll-fade affordances** — Uses `useScrollFade` to show 48 px edge gradients when content overflows the scrollable greeting/grid region. - **Pinned region gating** — The promo and chips are suppressed while `isLoadingHistory` or `loadError` is active (avoids misleadingly showing the new-user layout). ## Usage Example ```typescript import { MingoWelcome, MingoWelcomeProps, MingoQuickAction, } from '@openframe-oss-lib/components/mingo/mingo-welcome' const quickActions: MingoQuickAction[] = [ { id: 'run-diagnostic', label: 'Run Diagnostic', variant: 'outline', prompt: 'Run a full system diagnostic and summarize the results.', onClick: () => console.log('diagnostic triggered'), }, ] export function MingoChatPanel() { return ( previewPrompt(action.prompt ?? action.label)} onQuickActionHoverEnd={() => clearPreview()} onStartGuideChat={() => switchToGuideMode()} hasExistingChats={false} isLoadingHistory={false} promoStorage="local" /> ) } ``` **Source:** [`mingo-welcome.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mingo-welcome.tsx)