> ## Documentation Index
> Fetch the complete documentation index at: https://xrlive.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Text Input

> Free-text field that delivers the typed string to Blueprint

A **Text Input** exposes a free-text field to the operator. Blueprint receives the current string value through a bound event. The moment the event fires depends on the **Commit Change** setting.

***

## Configuration

Text inputs are declared inside `UICategories` on the `xrlive_UIpanel` component. Set **Type** to `Xrlive Text` and fill in the fields below.

| Field             | Type   | Description                                                                                                          |
| ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------- |
| **Name**          | String | Unique ID of the control. Must match exactly (case and spaces) when referenced in Blueprint.                         |
| **Tooltip**       | String | Optional helper text shown to the operator on hover.                                                                 |
| **Default Value** | String | The text pre-filled in the field when the visual loads. The field has no hint text — if left empty, it starts blank. |
| **Commit Change** | Bool   | Controls when the bound event fires. See the table below.                                                            |

| Commit Change | When the event fires                                            |
| ------------- | --------------------------------------------------------------- |
| `true`        | When the operator presses **Enter** or the field loses focus.   |
| `false`       | On every keystroke — each time a character is typed or deleted. |

<Tip>
  Use `true` for inputs that trigger heavy operations (queries, scene reloads, network calls) to avoid firing on every keystroke. Use `false` when the visual needs to react in real time as the operator types.
</Tip>

***

## Blueprint API

Call `Find Control by Name` on the `xrlive_UIpanel` reference, passing the text input's **Name**. Feed the **Return Value** into `Bind Event to On Text Change`. Create a **Custom Event** and connect it to the **Event** pin.

<Frame caption="Text input wiring — Find Control by Name feeds Bind Event to On Text Change">
  <img src="https://mintcdn.com/xrlive/0lHBZ3qoAiwMfyj9/images/sdk/ui-components/text-bind-event.png?fit=max&auto=format&n=0lHBZ3qoAiwMfyj9&q=85&s=c76e676b35767a405b119076c45f9a75" alt="Blueprint graph showing Xrlive Ulpanel reference connected to Find Control by Name, whose Return Value feeds the Target pin of Bind Event to On Text Change. A Custom Event node named OnTextChange_Event is connected to the Event pin and exposes two output pins: Control Name (string) and Text (string)." width="724" height="327" data-path="images/sdk/ui-components/text-bind-event.png" />
</Frame>

The custom event exposes two output pins:

| Pin              | Type   | Description                                                                                          |
| ---------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| **Control Name** | String | The name of the text input that fired the event. Useful when one event handles multiple text fields. |
| **Text**         | String | The current content of the text field at the moment the event fired.                                 |
