SubmitBar

rendered, live
the wire — click a line to scrub
the contract — SubmitBar in catalog.json
{
  "type": "object",
  "properties": {
    "component": {
      "const": "SubmitBar"
    },
    "submitAction": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Action",
      "description": "Fired on submit, only when every check on the surface passes. Hand-pick the answers you need into context as {\"path\": ...} bindings."
    },
    "submitLabel": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
      "description": "Names the act of submitting, e.g. 'Create account'. Default: localized 'Submit'."
    },
    "cancelAction": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/Action",
      "description": "Optional secondary action; renders a quiet cancel button."
    },
    "cancelLabel": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
    },
    "pending": {
      "$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicBoolean",
      "description": "Bind to a path and set true while processing the submission — the bar disables and shows progress. Set false (or write a server error) when done."
    }
  },
  "required": [
    "submitAction"
  ]
}
the prompt-pack — paste into your agent
### SubmitBar — submit (and cancel) with pending state

Submission fires only when every check on the surface passes. Hand-pick the answers you need into
`context`. To report a server-side verdict afterwards, reply with `updateDataModel` on the path you
want written — bind a `Callout` or the field's own error to that path when you build the form.

| prop           | type       | required | notes                                                          |
| -------------- | ---------- | -------- | -------------------------------------------------------------- |
| `submitAction` | action     | yes      | `{"event":{"name","context",...}}`; name it after what happens |
| `submitLabel`  | string     | no       | e.g. `"Create account"`; default localized "Submit"            |
| `cancelAction` | action     | no       | renders a quiet cancel button                                  |
| `cancelLabel`  | string     | no       |                                                                |
| `pending`      | `{"path"}` | no       | bind and set true while you process; the bar disables          |

```
{"id":"submit","component":"SubmitBar","submitLabel":"File report","pending":{"path":"/report/pending"},"submitAction":{"event":{"name":"report_filed","context":{"severity":{"path":"/report/severity"},"details":{"path":"/report/details"}}}}}
```