<!-- source-hash: 86ac59c4c1438a33b694f4b3fbba9291 -->
A chat empty-state onboarding card component that renders a single slash-command or feature row, supporting optional action buttons, icons, and interactive/non-interactive modes.

## Key Components

### Interfaces

- **`MingoOnboardingCardAction`** — Defines a single action button with `id`, `label`, and `onClick` handler
- **`MingoOnboardingCardProps`** — Full card configuration including `icon`, `title`, `slashCommand`, `description`, `actions`, `onClick`, and `className`

### Component

- **`MingoOnboardingCard`** — Root component that conditionally renders as a `<button>` (when `onClick` is set and no `actions`) or a `<div>` (when `actions` are present or no `onClick`)

### Behavior Logic

| Condition | Rendered Element |
|-----------|-----------------|
| `onClick` set, no `actions` | `<button>` with hover/focus styles |
| `actions` present | `<div>` with per-action `<button>` chips |
| Neither | Static `<div>` |

## Usage Example

```typescript
import {
  MingoOnboardingCard,
  MingoOnboardingCardAction,
} from './mingo-onboarding-card'

// Static card with slash command
<MingoOnboardingCard
  icon={<SearchIcon />}
  title="Search Knowledge Base"
  slashCommand="/search"
  description="Find articles, runbooks, and past tickets"
/>

// Interactive card (renders as <button>)
<MingoOnboardingCard
  icon={<RoadmapIcon />}
  title="View Roadmap"
  slashCommand="/roadmap"
  onClick={() => router.push('/roadmap')}
/>

// Card with action chips (renders as <div>)
const actions: MingoOnboardingCardAction[] = [
  { id: 'recent', label: 'Recent', onClick: () => fetchRecent() },
  { id: 'search', label: 'Search', onClick: (e) => { e.stopPropagation(); openSearch() } },
]

<MingoOnboardingCard
  icon={<TicketIcon />}
  title="Tickets"
  slashCommand="/tickets"
  description="Browse and manage open tickets"
  actions={actions}
/>
```

> **Note:** Stack multiple cards inside a `rounded-md` container — the `last:border-b-0` rule automatically removes the bottom divider from the final card, keeping the visual frame clean.