Presentational footer composer for the OpenFrame chat panel, rendering either a live `ChatInput` or a read-only archived placeholder above the model/usage row, with optional entity-context picker integration. ## Key Components | Export | Type | Description | |--------|------|-------------| | `ChatComposer` | Component | Main composer component combining input, context strips, and model row | | `ChatComposerProps` | Interface | Full prop contract for the composer | ## Key Behaviors - **Archived mode** — replaces the input with an unarchive prompt banner (`BoxArchiveIcon` + message) - **Context mode** — activated when `contextPicker` is set; wraps input in a unified card with a focus-ring border, renders `ChatContextMemoryBar` (ambient navigation history), `ChatContextChipStrip` (explicitly assigned items), and a `+` plus-menu anchored inside the input's start adornment - **Legacy mode** — plain `ChatInput` with an optional standalone `ChatAttachmentAddButton` to the left of the model row - **Icon resolution** — memoizes a `type → icon` map from `contextPicker.entityTypes` to avoid rebuilding on every render ## Usage Example ```typescript setPickerOpen(true)} onCloseContextPicker={() => setPickerOpen(false)} mentionQuery={mentionQuery} onMentionQueryChange={setMentionQuery} /> ``` ## Source [`chat-composer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-composer.tsx)