RadioGroup
rendered, live
the wire — click a line to scrub
the contract — RadioGroup in catalog.json
{
"type": "object",
"properties": {
"component": {
"const": "RadioGroup"
},
"label": {
"$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString",
"description": "Group label. Required — the accessible name of the whole group."
},
"value": {
"$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DataBinding",
"description": "Data binding for the chosen option's value, always {\"path\": ...}."
},
"options": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"value": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"value",
"label"
],
"additionalProperties": false
}
]
},
"description": "All options are visible — use RadioGroup for 2–6 choices, SelectField beyond that."
},
"hint": {
"$ref": "https://a2ui.org/specification/v1_0/common_types.json#/$defs/DynamicString"
},
"checks": {
"type": "array",
"items": {
"type": "object",
"description": "A validation check. Spec-shaped — `condition` is a FunctionCall — but narrowed to the renderer's built-ins, and `message` is required because a check with no human text fails silently.",
"properties": {
"condition": {
"type": "object",
"properties": {
"call": {
"enum": [
"required",
"email",
"regex",
"length",
"numeric"
],
"description": "One of the protocol's built-in validation functions. The renderer supplies the field's current value automatically."
},
"args": {
"type": "object",
"description": "Arguments beyond the value: regex takes {\"pattern\"}, length and numeric take {\"min\"} and/or {\"max\"}. required and email take none."
}
},
"required": [
"call"
],
"additionalProperties": false
},
"message": {
"type": "string",
"description": "Human text shown when the check fails. Always required."
}
},
"required": [
"condition",
"message"
],
"additionalProperties": false
},
"description": "Validation rules, evaluated by the renderer as the user types. Submission is blocked while any check fails."
}
},
"required": [
"label",
"value",
"options"
]
}the prompt-pack — paste into your agent
### RadioGroup — one of a few, all visible
Same shape as SelectField minus `placeholder`. Use for 2–6 options; SelectField beyond that.
```
{"id":"severity","component":"RadioGroup","label":"Severity","value":{"path":"/report/severity"},"options":[{"value":"sev1","label":"Sev 1 — total outage"},{"value":"sev2","label":"Sev 2 — degraded"},{"value":"sev3","label":"Sev 3 — cosmetic"}],"checks":[{"condition":{"call":"required"},"message":"Choose a severity."}]}
```