A dropdown component for assigning users to tickets, supporting two visual variants: a compact avatar-based popover and a default inline editable display. ## Key Components ### Interfaces - **`TicketAssigneeOption`** — Shape for assignee list items (`value`, `label`, `imageUrl?`) - **`AssigneeDropdownProps`** — Component props including `currentAssignee`, `options`, `onAssign` callback, and `variant` ### Exports - **`AssigneeDropdown`** — Main entry component that delegates to `CompactAssigneeDropdown` or `DefaultAssigneeDropdown` based on the `variant` prop ### Internal Components - **`CompactAssigneeDropdown`** — Renders a circular avatar button (or `UserPlusIcon` when unassigned) that opens a searchable Radix UI popover list; selecting the current assignee deselects them - **`DefaultAssigneeDropdown`** — Inline display showing the assignee's avatar and name with a pencil edit icon; clicking switches to an `Autocomplete` input for searching and reassigning ## Usage Example ```typescript import { AssigneeDropdown } from './assignee-dropdown' const users = [ { value: 'u1', label: 'Alice Johnson', imageUrl: '/avatars/alice.png' }, { value: 'u2', label: 'Bob Smith' }, ] // Default variant (inline editable) console.log('Assigned to:', userId)} /> // Compact variant (avatar popover) console.log('Assigned to:', userId)} variant="compact" /> ``` **Behavior notes:** - `onAssign` receives `null` when the current assignee is deselected (compact variant toggle) - Search resets automatically when the compact popover closes - The `isLoading` prop shows a loading state inside the options list - `currentAssignee.deleted` — deleted account: the avatar is replaced by `DeletedUserAvatar` (red user-x) and the name renders in `text-ods-error` (default variant).