<!-- source-hash: 5c7fae07590f9209605f37d7b88636f3 -->
Draggable kanban ticket card component for board views, supporting drag-and-drop via `@dnd-kit/sortable`, priority indicators, assignee avatars, device info, and tag display.

## Key Components

### `TicketCard`
Main card component with three render modes:
- **Overlay** – rendered during active drag (slight rotation, shadow)
- **Link** – wraps content in a Next.js `<Link>` when `href` is provided
- **Button** – falls back to a `<button>` for click-only interaction

### `TicketTagRow` *(internal)*
Renders up to `MAX_VISIBLE_TAGS` (2) tags with an overflow count badge (e.g. `+3`).

### `PRIORITY_COLOR_CLASS`
Maps `BoardPriority` values (`low`, `medium`, `high`, `urgent`) to ODS color tokens for the priority flag icon.

## Props

| Prop | Type | Description |
|---|---|---|
| `ticket` | `BoardTicket` | Ticket data to display |
| `columnId` | `string` | Parent column ID, passed to sortable context |
| `href` | `string?` | If set, card navigates on click |
| `isOverlay` | `boolean` | Drag overlay mode (disables sortable refs) |
| `dragDisabled` | `boolean?` | Disables dnd-kit drag handling |
| `renderAssignSlot` | `(ticket) => ReactNode` | Custom assignee slot renderer |

## Usage Example

```typescript
import { TicketCard } from './ticket-card'

<TicketCard
  ticket={{
    id: 'TKT-001',
    title: 'VPN not connecting',
    priority: 'high',
    tags: ['network', 'vpn'],
    assignees: [{ id: 'u1', name: 'Alice', initials: 'AL' }],
    deviceHostnames: ['workstation-42'],
    organizationName: 'Acme Corp',
  }}
  columnId="in-progress"
  href="/tickets/TKT-001"
/>
```