<!-- source-hash: a4bd0ac033c0ff89f6d4e4e0f75efebc -->
Renders a single ticket row with an expandable inline drawer, combining a compact summary tile with a collapsible detail panel for the `TicketCenter` embed.

## Key Components

- **`TicketRow`** — Main export. Composes a `<ChatTicketItem>` summary tile and a `<CollapsibleContent>` wrapping `<TicketDetailDrawer>`. Controlled via `expanded`/`onToggle` props owned by the parent `<TicketCenter>`.
- **`TicketRowProps`** — Interface defining ticket data, expansion state, action handlers (`onSendMessage`, `onClose`, `onReopen`, `onActionCollapsed`), and UI flags (`busy`, `supportSystemDown`).
- **`handleClick`** — Memoized click handler that toggles expansion and smooth-scrolls the row into view, pre-adjusting target Y position to account for any drawer above that is simultaneously collapsing.
- **`tileData`** — Derived `ChatTicketItemData` object mapping raw `AnyTicket` fields to display values, including HubSpot pipeline stage label, relative timestamps, and ClickUp linked task status chips.

## Usage Example

```typescript
<TicketRow
  ticket={ticket}
  expanded={expandedTicketId === ticket.id}
  onToggle={(id) => setExpandedTicketId((prev) => (prev === id ? null : id))}
  busy={isBusy}
  supportSystemDown={false}
  onSendMessage={handleSendMessage}
  onClose={handleClose}
  onReopen={handleReopen}
  onActionCollapsed={() => setExpandedTicketId(null)}
/>
```

## Notes

- Optimistic tickets (pre-server-confirmation) disable click interaction and suppress drawer rendering since a real ticket ID is not yet available.
- The scroll adjustment logic mirrors `<HelpCenterCard>` — queries `div[id^="ticket-drawer-"]` to find an open drawer above the clicked row and subtracts its height from the raw scroll target, ensuring the final scroll position matches the post-collapse layout.