Skip to content

Composer

The chat input box: a growing text field with a submit button and optional attachments.

Group: Inputs · Kind: native · in the lite catalog

example
busy · true
attachments · true

Open in the playground

The same specimen painted by React, SwiftUI, Compose and gpui.

exponential-ui-composer on Web
exponential-ui-composer on iOS
exponential-ui-composer on Android
exponential-ui-composer on Desktop
Prop Type Required Bindable Description
placeholder string – – Hint text while empty.
value string – yes The draft text; bind it.
submitLabel string – – The submit button’s accessibility label. Default "$string.send".
attachments boolean – – Shows the attach control. Default false.
busy boolean – – Turns submit into a stop while a reply streams. Default false.
  • on.submit: runs an action
  • on.change: runs an action
  • on.stop: runs an action

None.

none

No basic catalog component maps here.

A native component: every renderer paints it directly.

Role: textbox

textbox (multiline) + send button

Keys Action
Enter submit; Shift+Enter: newline
Escape while busy stop

Recipe parts: Composer/root Composer/field Composer/placeholder Composer/attachment Composer/send

Keyed by: attachments busy :hover :pressed :focus :disabled :checked :open :selected :invalid :dragover

Themes · Write a theme

Form · FieldGroup · FormActions · Input · Textarea · NumberField · Checkbox · Radio