---
title: Composer
description: Gemini's pill input with a model picker and a morphing send button.
---

<Component path="gemini/examples/gemini-composer" />

<RegistryInstall name="gemini-composer" />

`GeminiComposer` is a shadcn `InputGroup` inside a form: an `InputGroupButton` to add files, an `InputGroupInput`, and an end `InputGroupAddon` with the `GeminiModelSelector` and one round `InputGroupButton`. The button shows a mic while the input is empty, turns into a filled send arrow once you type, and becomes a stop square while `busy`. The icons crossfade.

| Prop | Default | Description |
| --- | --- | --- |
| `onSend` | | Called with the trimmed text. The input clears when it's set. |
| `onStop` | | Called when the stop button is pressed. |
| `busy` | `false` | Shows the stop button and blocks sending. |
| `placeholder` | `Ask Gemini` | The input placeholder. |
| `model`, `defaultModel`, `onModelChange` | `pro` | Model state, controlled or uncontrolled. |
| `models` | `GEMINI_MODELS` | The options in the picker. |
| `disclaimer` | Gemini's notice | The line under the input. Pass `null` to hide it. |
| `privacyLabel`, `privacyHref` | `Your privacy & Gemini` | The underlined text after the disclaimer. With `privacyHref` it's a link. |

## Used in

**[Gemini](/blocks/gemini)**

A full recreation of the Gemini chat with the animated sparkle, streamed replies and a model picker.
