# A2uiBasicCatalogV1.Button

Artifact: [androidx.a2ui.compose:compose-ui](https://developer.android.com/jetpack/androidx/releases/a2ui-compose) [View Source](https://cs.android.com/search?q=file:androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.kt+class:androidx.a2ui.compose.ui.catalog.A2uiBasicCatalogV1.Button) Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)


```
interface A2uiBasicCatalogV1.Button : A2uiComponent
```

<br />

*** ** * ** ***

The A2UI `"Button"` component for clickable buttons that dispatch actions.

**Schema Properties:**

- `accessibility` (Dynamic Custom, optional): Accessibility attributes for the button.

- `weight` (Number, optional): The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. May only be set when the component is a direct descendant of a Row or Column. See `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1#WeightProperty()`.

- `checks` (Dynamic Custom, optional): Client-side check validation rules for the button. See `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule`.

- `child` (Component ID String, required): The ID of the child component inside the button (e.g., a `"Text"` or `"Icon"` component).

- `variant` (String Enum, optional): A hint for the button style. This is a static configuration and does not support dynamic data bindings. Valid options: `"default"`, `"primary"`, `"borderless"`. Defaults to `"default"`.

- `action` (Action Object, required): The action payload dispatched when the button is clicked.

## Summary

| ### Nested types |
|---|
| `enum https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-enum/index.html<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant>` Visual style variant for a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |

| ### Public companion properties |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/DynamicA2uiProperty<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.AccessibilityAttributes>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#AccessibilityProperty()` The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"accessibility"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |
| `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/StaticA2uiProperty<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#ActionProperty()` The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"action"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |
| `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/DynamicA2uiProperty<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule>>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#ChecksProperty()` The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"checks"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |
| `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/StaticA2uiProperty<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#ChildProperty()` The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"child"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |
| `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/StaticA2uiProperty<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#VariantProperty()` The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"variant"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. |

| ### Public functions |
|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentScope.https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#(androidx.a2ui.compose.runtime.A2uiComponentScope).Content(androidx.a2ui.compose.runtime.A2uiComponentProperties,androidx.compose.ui.Modifier)( properties: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentProperties, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier )` Emits the UI for this component. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentScope.https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#(androidx.a2ui.compose.runtime.A2uiComponentScope).TypedContent(kotlin.String,androidx.a2ui.compose.ui.catalog.A2uiBasicCatalogV1.Button.Variant,kotlin.collections.Map,androidx.a2ui.compose.ui.catalog.A2uiBasicCatalogV1.AccessibilityAttributes,kotlin.collections.List,androidx.compose.ui.Modifier)( childId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, variant: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant, action: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>, accessibility: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.AccessibilityAttributes?, checks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule>, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier )` Renders the `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button` with its resolved property values. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentScope.https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#(androidx.a2ui.compose.runtime.A2uiComponentScope).isReady(androidx.a2ui.compose.runtime.A2uiComponentProperties)(properties: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentProperties)` Determines whether this component is ready to be rendered. |

| ### Public properties |
|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#description()` A semantic description of the component's behavior and purpose. |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#name()` The unique string identifier for this component type (e.g., `"Text"`, `"Button"`). |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty<*>>` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button#properties()` The list of typed properties expected by this component. |

## Public companion properties

### AccessibilityProperty

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
val AccessibilityProperty: DynamicA2uiProperty<A2uiBasicCatalogV1.AccessibilityAttributes>
```

The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"accessibility"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`.

### ActionProperty

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
val ActionProperty: StaticA2uiProperty<Map<String, Any?>>
```

The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"action"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`.

### ChecksProperty

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
val ChecksProperty: DynamicA2uiProperty<List<A2uiBasicCatalogV1.CheckRule>>
```

The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"checks"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`. See `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule`.

### ChildProperty

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
val ChildProperty: StaticA2uiProperty<String>
```

The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"child"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`.

### VariantProperty

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
val VariantProperty: StaticA2uiProperty<A2uiBasicCatalogV1.Button.Variant>
```

The `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiProperty` for the `"variant"` property of a `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button`.

## Public functions

### A2uiComponentScope.Content

Artifact: [androidx.a2ui.compose:compose-ui](https://developer.android.com/jetpack/androidx/releases/a2ui-compose) [View Source](https://cs.android.com/search?q=file:androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.kt+function:Content)

```
@Composable
open fun A2uiComponentScope.Content(
    properties: A2uiComponentProperties,
    modifier: Modifier
): Unit
```

Emits the UI for this component.

This function is invoked within the `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentScope`, which provides access to extensions for evaluating reactive data bindings, rendering nested children, dispatching user actions, and reporting runtime errors.

| Parameters |
|---|---|
| `properties: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentProperties` | The stable properties wrapper from which to extract static payloads or bind dynamic data paths. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` applied to the root of this component's layout. |

### A2uiComponentScope.TypedContent

Artifact: [androidx.a2ui.compose:compose-ui](https://developer.android.com/jetpack/androidx/releases/a2ui-compose) [View Source](https://cs.android.com/search?q=file:androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.kt+function:TypedContent) Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui-compose#1.0.0-alpha02)

```
@Composable
fun A2uiComponentScope.TypedContent(
    childId: String,
    variant: A2uiBasicCatalogV1.Button.Variant,
    action: Map<String, Any?>,
    accessibility: A2uiBasicCatalogV1.AccessibilityAttributes?,
    checks: List<A2uiBasicCatalogV1.CheckRule>,
    modifier: Modifier
): Unit
```

Renders the `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button` with its resolved property values.

| Parameters |
|---|---|
| `childId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | ID of the child component to render inside this button |
| `variant: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant` | `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.Button.Variant` visual style variant of the button |
| `action: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>` | action payload `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html` dispatched when clicked |
| `accessibility: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.AccessibilityAttributes?` | accessibility attributes for the button |
| `checks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule>` | validation rules for this button. When any `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule#condition()` is false, the button implementation should indicate an error state or disable action dispatch. See `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.CheckRule`. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` to apply to the layout |

### A2uiComponentScope.isReady

Artifact: [androidx.a2ui.compose:compose-ui](https://developer.android.com/jetpack/androidx/releases/a2ui-compose) [View Source](https://cs.android.com/search?q=file:androidx/a2ui/compose/ui/catalog/A2uiBasicCatalogV1.kt+function:isReady)

```
@Composable
open fun A2uiComponentScope.isReady(properties: A2uiComponentProperties): Boolean
```

Determines whether this component is ready to be rendered.

This is evaluated during component state resolution to determine if the component should transition from the `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentState.Loading` state to the `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentState.Success` state. The readiness is automatically re-evaluated when any reactive state read in this composable function changes (such as dynamic data bindings observed via `properties.bind(...)`).

By default, components are considered instantly ready. Override this method to support progressive rendering---for example, returning `false` until a required dynamic data binding (like an image URL or text string) has been successfully resolved from the surface's data model.

| Parameters |
|---|---|
| `properties: https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentProperties` | The stable properties wrapper provided by the A2UI protocol. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `true` if the component is fully ready to be composed, `false` if it is still loading. |

## Public properties

### description

```
open val description: String
```

A semantic description of the component's behavior and purpose.

This is included in the generated schema to help the agent understand when and how it should output this component.

### name

```
open val name: String
```

The unique string identifier for this component type (e.g., `"Text"`, `"Button"`).

This matches the `"component"` field in the A2UI protocol's component payloads and is used by the framework to route incoming payloads to this specific implementation.

Note: This name must be unique within an `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/ui/A2uiCatalog`.

### properties

```
open val properties: List<A2uiProperty<*>>
```

The list of typed properties expected by this component.

The properties serve two purposes:

1. To automatically generate the component's JSON schema for the agent.

2. To serve as type-safe tokens for extracting payloads or resolving dynamic data bindings from `https://developer.android.com/reference/kotlin/androidx/a2ui/compose/runtime/A2uiComponentProperties` at runtime.