# Text

Rich text block with Markdown formatting. Supports live values from the app's data.

## Add it to an app

1. Open the app builder and find **Text** in the component palette.
2. Insert it into the intended region or container.
3. Set its properties in the inspector. Use a literal for a fixed value or a binding for a value supplied by the app.
4. Connect its events where the app should respond to a user gesture.
5. Preview with representative data and save after resolving validation problems.

The type name in the builder’s code view is `text`.

## Settings

| Setting | Accepted value | Required | Default | What it controls |
| --- | --- | --- | --- | --- |
| Content (Markdown) (`content`) | string | No | "" | Markdown, sanitized before render; a {{ }} template interpolates live values. The listed default is inserted when adding a new component. |

## Values available to bindings

This component declares no published values. Use its settings and any events to configure its behaviour.

## Example: Static copy

| Setting | Example value |
| --- | --- |
| `content` | "## Welcome\n\nDrop a file to get started." |

## Example: Live value

| Setting | Example value |
| --- | --- |
| `content` | "Selected: **{{ components.Category.value }}**" |

## If it is empty or unavailable

Check the source binding, the selected item, and the app’s access. A hosted document, table, review, or storage component needs the corresponding app capability; an offline preview cannot supply live private data. A source running with no results is different from an invalid binding. Inspect the app’s workflow and data source before changing the presentation.
