<!-- source-hash: 141d208f153f42ac4e3acd48496b0621 -->
Defines all TypeScript prop and ref types for the chat UI component library, covering containers, headers, messages, message lists, inputs, and slash command affordances.

## Key Components

### Core Component Props
- **`ChatContainerProps`** — Extends `HTMLAttributes<HTMLDivElement>` for the root chat wrapper
- **`ChatHeaderProps`** — Full header configuration including user info, connection status, ticket info, `fullWidth`, and `bare` display modes
- **`ChatMessageEnhancedProps`** — Per-message props including role, content (`string | MessageSegment[]`), entity card rendering, and markdown link routing
- **`ChatMessageListProps`** — Message list with infinite scroll, approval handling, avatar display, and forwarded `renderEntityCard`/`NavLinkAnchor` props
- **`ChatMessageListRef`** — Imperative handle exposing `scrollToBottom`, `getScrollPosition`, and `setScrollPosition`
- **`ConnectionIndicatorProps`** — Wraps `ConnectionStatus` for the connection state badge

### Slash Commands
- **`SlashCommandsProp`** — Consumer-supplied `fetchCommands` callback and optional `resolveSourceIcon` for autocomplete
- **`SlashCommandSummary`** — Server-resolved command descriptor with `actions`, `argumentHint`, `label`, `displayOrder`, and `iconName`
- **`SlashCommandActionId`** — String-literal union: `'browse' | 'search' | 'find' | 'display'`
- **`SlashCommandSourceMeta`** — Icon component + label pair returned by `resolveSourceIcon`

### Routing
- **`NavLinkAnchorComponent`** — Host-supplied anchor component for markdown links, enabling unified routing (soft same-origin nav, new-tab cross-origin)

## Usage Example

```typescript
import type {
  ChatMessageListProps,
  ChatHeaderProps,
  NavLinkAnchorComponent,
  SlashCommandsProp,
} from './component.types'

// Host-supplied anchor delegates routing to app router
const NavLinkAnchor: NavLinkAnchorComponent = ({ href, className, children }) => (
  <a href={href} className={className}>{children}</a>
)

const headerProps: ChatHeaderProps = {
  userName: 'Mingo AI',
  connectionStatus: 'connected',
  fullWidth: true,   // fills narrow side panel
  bare: true,        // no card chrome inside Drawer
}

const listProps: ChatMessageListProps = {
  messages,
  fullWidth: true,
  hasNextPage: true,
  isFetchingNextPage: false,
  onLoadMore: fetchOlderMessages,
  renderEntityCard: (ref) => <EntityCard reference={ref} />,
  NavLinkAnchor,
}

const slashCommands: SlashCommandsProp = {
  fetchCommands: async (prefix, signal) =>
    fetch(`/api/docs/commands?q=${prefix}`, { signal }).then(r => r.json()),
  resolveSourceIcon: (sourceId) => iconRegistry[sourceId],
}
```