# ChatInput class

> The ChatInput class of Novior.MentorAgent.Abstractions.Components. Part of the Novior.MentorAgent.Abstractions package.

- URL: https://docs.mentoragent.net/api/novior-mentoragent-abstractions-components/chatinput
- Verified with: MentorAgent 1.2.0
- Last updated: 2026-10-27
- Packages: Novior.MentorAgent.Abstractions

## Definition

Namespace: `Novior.MentorAgent.Abstractions.Components`. Package: `Novior.MentorAgent.Abstractions`.

`public class ChatInput : ComponentBase, IAsyncDisposable`

```shell
dotnet add package Novior.MentorAgent.Abstractions
```

## Constructors

`public ChatInput()`

## Properties

### `Disabled`

`public bool Disabled { get; set; }`

### `OnSend`

`public EventCallback<MentorUserMessage> OnSend { get; set; }`

### `Placeholder`

`public string? Placeholder { get; set; }`

## Methods

### `DisposeAsync`

`public ValueTask DisposeAsync()`

### `OnDragStateChanged`

`public Task OnDragStateChanged(bool dragging)`

### `OnFilesPending`

`public Task OnFilesPending()`

Called from JS when images were pasted or dropped; pulls each blob over a stream reference.

### `OnUrlDropped`

`public Task OnUrlDropped(string url)`

Called from JS when an image is dragged in from another page (a URL, not a file).

### `OnVoiceError`

`public void OnVoiceError(string error)`

### `OnVoiceInterim`

`public void OnVoiceInterim(string partial)`

Live transcript while the user is still speaking (\#17). Shown, never sent: the engine rewrites interim text as it hears more, so submitting it would send a half-heard question.

### `OnVoiceResult`

`public Task OnVoiceResult(string transcript)`

### `OnVoiceStarted`

`public void OnVoiceStarted()`

### `OnVoiceStopped`

`public void OnVoiceStopped()`

---

- Previous: [A2AStatusBadge class](https://docs.mentoragent.net/api/novior-mentoragent-abstractions-components/a2astatusbadge.md)
- Next: [ChatWidget class](https://docs.mentoragent.net/api/novior-mentoragent-abstractions-components/chatwidget.md)
