Progress

A determinate or indeterminate progress indicator. No value prop means indeterminate.

rendered, live
the wire — click a line to scrub
the contract — Progress in catalog.json
{
  "type": "object",
  "description": "A determinate or indeterminate progress indicator. No value prop means indeterminate.",
  "properties": {
    "component": {
      "const": "Progress"
    },
    "label": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
      "description": "What is progressing, e.g. 'Rolling out build 4191'. Required — it is the accessible name."
    },
    "value": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber",
      "description": "Current progress. OMIT this prop entirely for an indeterminate (unknown-duration) indicator. Bind with {\"path\": ...} so it advances via updateDataModel."
    },
    "max": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicNumber",
      "default": 100,
      "description": "The value that means complete. May bind with {\"path\": ...} when the total itself can change (e.g. pods in a rollout)."
    },
    "intent": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "good",
            "bad",
            "warning",
            "info",
            "neutral"
          ]
        },
        {
          "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DataBinding"
        },
        {
          "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/FunctionCall"
        }
      ],
      "description": "Judgment of the operation on the shared scale. Default: 'neutral'.",
      "default": "neutral"
    }
  },
  "required": [
    "component",
    "label"
  ]
}
the prompt-pack — paste into your agent
### Progress — determinate or indeterminate

| prop     | type         | required | notes                                                                   |
| -------- | ------------ | -------- | ----------------------------------------------------------------------- |
| `label`  | string       | yes      | what is progressing                                                     |
| `value`  | number       | no       | **omit entirely for indeterminate**; bind to advance                    |
| `max`    | number       | no       | complete at this value; default `100`; may bind if the total can change |
| `intent` | intent scale | no       | default `"neutral"`                                                     |

```
{"id":"rollout","component":"Progress","label":"Rolling out build 4191","value":{"path":"/podsReady"},"max":10}
```