The built-in A2UI catalog provides 18 Angular components covering display, layout, interactive controls, media, and advanced inputs. Pass a2uiBasicCatalog() to the ChatComponentviews input to enable A2UI rendering, or instantiate it directly for custom setups.
Import:
import { a2uiBasicCatalog } from '@ngaf/chat';
Signature
function a2uiBasicCatalog(): ViewRegistry
Returns a ViewRegistry mapping 18 A2UI type names to their Angular component implementations. Pass the result to A2uiSurfaceComponent or use it as a starting point for a custom registry.
Renders an icon glyph as a text span. The name prop is displayed directly — use an emoji or a Unicode symbol.
A2UI type
Angular component
Selector
Icon
A2uiIconComponent
a2ui-icon
Prop
Type
Description
name
string
Glyph to render (e.g., "✓", "⚠️")
Divider
Renders a horizontal rule. Has no props.
A2UI type
Angular component
Selector
Divider
A2uiDividerComponent
a2ui-divider
Layout Components
Layout components receive childKeys — an array of component IDs — and render each child via json-render's RenderElementComponent. They also receive the full spec so that child elements can be looked up by key.
Row
Arranges children horizontally with a flex row layout.
A2UI type
Angular component
Selector
Row
A2uiRowComponent
a2ui-row
Prop
Type
Description
childKeys
string[]
Ordered list of child component IDs
spec
Spec
Injected automatically by the render engine
Column
Arranges children vertically with a flex column layout.
A2UI type
Angular component
Selector
Column
A2uiColumnComponent
a2ui-column
Prop
Type
Description
childKeys
string[]
Ordered list of child component IDs
spec
Spec
Injected automatically by the render engine
Card
Renders children inside a rounded bordered card container with an optional title.
A2UI type
Angular component
Selector
Card
A2uiCardComponent
a2ui-card
Prop
Type
Description
title
string
Optional card heading
childKeys
string[]
Ordered list of child component IDs
spec
Spec
Injected automatically by the render engine
List
Renders children in a scrollable vertical list (max height 24rem).
A2UI type
Angular component
Selector
List
A2uiListComponent
a2ui-list
Prop
Type
Description
childKeys
string[]
Ordered list of child component IDs
spec
Spec
Injected automatically by the render engine
Template children
For data-driven lists, use the A2uiChildTemplate form instead of static childKeys. Set children to {"path": "/items", "componentId": "item-template"} and the surface component will expand the template once per array item. See the Surface Component page for details.
Interactive Components
Interactive components support two-way data binding and button actions. They receive two special injected props:
_bindings — a Record<string, string> auto-populated by surfaceToSpec() from path references in the component definition. Maps prop names to JSON Pointer paths. When the user changes a bound value, the component emits an a2ui:datamodel: event. Agents do not write _bindings directly — they use path references (e.g., {"path": "/name"}) and the render pipeline extracts bindings automatically.
emit — injected by the render engine; components call it to dispatch events back to the chat.
Button
Renders a button that dispatches an action when clicked.
A2UI type
Angular component
Selector
Button
A2uiButtonComponent
a2ui-button
Prop
Type
Description
label
string
Button label text
variant
'primary' | 'borderless'
Visual style. Defaults to 'primary'
disabled
boolean
Disables the button when true
action
A2uiAction
Action to execute on click (event or function call)
validationResult
A2uiValidationResult
Pre-computed validation result — button is disabled if valid is false
emit
injected
Event emitter provided by the render engine
Action types:
// Emit a named event with resolved context (sent back to the agent as v0.9 action){"action": {"event": {"name": "submit", "context": {"email": {"path": "/email"}, "formId": "contact"}}}}// Execute a local function (e.g., open a URL) — agent never sees this{"action": {"functionCall": {"call": "openUrl", "args": {"url": "https://example.com"}}}}
Validation checks reference built-in validators by name. If any check fails, the button is automatically disabled: