<!-- source-hash: 827d4c23e1bcd10b78b97232f2822fa0 -->
Renders the full Help Center surface for authenticated users, providing ticket listing, creation, filtering, pagination, and optimistic UI updates. Serves as the primary component mounted on the `/tickets` route in OpenFrame.

## Key Components

- **`HelpCenterList`** — Public entry point. Guards against unauthenticated access (renders skeleton during identity load, `EmptyState` for anon users), then delegates to `HelpCenterListAuthed`.
- **`HelpCenterListAuthed`** — Internal component handling all authenticated state: merges optimistic + server tickets, manages expanded row, wires mutation callbacks, and composes the full page layout via `<DevSectionPage>`.
- **`HelpCenterListProps`** — Accepts an optional `toast` override for testability.

**Key hooks used:**
- `useTicketsList` — fetches paginated tickets by `search`, `status`, `page`
- `useTicketActions` — mutations (submit, close, reopen, send message) with optimistic callbacks
- `useChatIdentity` — resolves session email/name; guards the auth gate

## Usage Example

```typescript
// Mounted directly on the /tickets page (OpenFrame):
import { HelpCenterList } from './help-center-list'

export default function TicketsPage() {
  return <HelpCenterList />
}

// With toast override for testing:
import { mockToast } from '../test-utils'

render(<HelpCenterList toast={mockToast} />)
```

## State Model

```text
URL params        → search, status, page   (read by useTicketsList)
optimisticTickets → local useState          (prepend on submit, remove on settle)
expandedTicketId  → local useState          (single drawer open at a time)
supportSystemDown → local useState          (disables create form on error)
```

> **Note:** Optimistic placeholders are kept in local state (not the TanStack query cache) so URL filter changes don't discard in-flight submissions mid-render.