# Composer

Group: App

The conversational bar at the bottom of the app: bring sources and talk to the map.
- Controlled: `value`, `onChange`, `onSend`. `attachments` (`SourceChip` props with `id`) and `onRemoveAttachment`; `onAttach(kind)` for the `+` menu (file, link, video, notion); `busy` while Visualli works; `hint` for a one-line helper.
- Enter sends, Shift+Enter adds a line. Send is disabled until there is text or an attachment.


## Props

```ts
export interface ComposerProps { value: string; onChange: (value: string) => void; onSend?: () => void; attachments?: Attachment[]; onRemoveAttachment?: (id: string) => void; onAttach?: (kind: 'file' | 'link' | 'video' | 'notion') => void; busy?: boolean; placeholder?: string; hint?: string }
```

## Use

```ts
import { Composer } from '@visualli/design-system/components';
```
