`SchedulerContextPanel` — the "who / what / how long" side of the scheduler card (internal to `meeting-scheduler`; not exported on its own). Renders host identity rows (`SquareAvatar` round + name + title), optional meeting title/description, duration chips (selection lives HERE, not as a wizard step) and a SEARCHABLE timezone picker (`Autocomplete` over all IANA zones with live GMT offsets, `onTimezoneChange` up to the parent; a same-footprint skeleton holds the space until the parent resolves the zone post-mount so SSR output stays deterministic). Also exports `ContextPanelSkeleton` — the per-region loading state, identical footprint by construction. ## Props (`SchedulerContextPanelProps`) | Prop | Type | Description | |---|---|---| | `hosts` | `MeetingHost[]` | Display-only host identities (never emails) | | `title` / `description` | `string` / `string \| null` | Meeting copy (both optional) | | `durationsMs` | `number[]` | Offered durations; >1 renders chips, exactly 1 renders a static line | | `selectedDurationMs` | `number \| null` | Chip selection state | | `onSelectDuration` | `(ms: number) => void` | Chip click — parent resets day/slot | | `timezone` | `string \| null` | Resolved IANA zone (null pre-resolution) | | `onTimezoneChange` | `(tz: string) => void`? | Timezone picker selection — parent owns the zone state | | `locked` | `boolean`? | Post-slot-selection: selectors hidden, static duration line shown | | `className` | `string?` | Panel container classes |