MeldUI

Catalog Reference

The components, functions, and theme tokens in the MeldUI A2UI catalog, generated from the contract.

Auto-generated from the catalog definitions. Do not edit by hand — run pnpm --filter docs generate-a2ui-reference.

Catalog

  • Catalog ID: https://meldui.dipayanb.com/a2ui/v1/catalog.json
  • A2UI version: v0.9
  • Components: 35 · Functions: 14

All components below are advertised under a single catalogId. The groups are an authoring/reliability grouping, not separate catalogs.

Components

Basic primitives

Text

PropTypeRequiredDescription
textDynamicStringyesThe text content to display. While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.
variantenumnoA hint for the base text style. One of: h1, h2, h3, h4, h5, caption, body. Default: body.

Image

PropTypeRequiredDescription
urlDynamicStringyesThe URL of the image to display.
descriptionDynamicStringnoAccessibility text for the image.
fitenumnoSpecifies how the image should be resized to fit its container. This corresponds to the CSS ‘object-fit’ property. One of: contain, cover, fill, none, scaleDown. Default: fill.
variantenumnoA hint for the image size and style. One of: icon, avatar, smallFeature, mediumFeature, largeFeature, header. Default: mediumFeature.

Icon

PropTypeRequiredDescription
nameoneOfyesThe name of the icon to display.

Row

A layout component that arranges its children horizontally. To create a grid layout, nest Columns within this Row.

PropTypeRequiredDescription
childrenChildListyesDefines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.
justifyenumnoDefines the arrangement of children along the main axis (horizontally). Use ‘spaceBetween’ to push items to the edges, or ‘start’/‘end’/‘center’ to pack them together. One of: center, end, spaceAround, spaceBetween, spaceEvenly, start, stretch. Default: start.
alignenumnoDefines the alignment of children along the cross axis (vertically). This is similar to the CSS ‘align-items’ property, but uses camelCase values (e.g., ‘start’). One of: start, center, end, stretch. Default: stretch.

Column

A layout component that arranges its children vertically. To create a grid layout, nest Rows within this Column.

PropTypeRequiredDescription
childrenChildListyesDefines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.
justifyenumnoDefines the arrangement of children along the main axis (vertically). Use ‘spaceBetween’ to push items to the edges (e.g. header at top, footer at bottom), or ‘start’/‘end’/‘center’ to pack them together. One of: start, center, end, spaceBetween, spaceAround, spaceEvenly, stretch. Default: start.
alignenumnoDefines the alignment of children along the cross axis (horizontally). This is similar to the CSS ‘align-items’ property. One of: center, end, start, stretch. Default: stretch.

List

PropTypeRequiredDescription
childrenChildListyesDefines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list.
directionenumnoThe direction in which the list items are laid out. One of: vertical, horizontal. Default: vertical.
alignenumnoDefines the alignment of children along the cross axis. One of: start, center, end, stretch. Default: stretch.

Card

PropTypeRequiredDescription
childComponentIdyesThe ID of the single child component to be rendered inside the card. To display multiple elements, you MUST wrap them in a layout component (like Column or Row) and pass that container’s ID here. Do NOT pass multiple IDs or a non-existent ID. Do NOT define the child component inline.

Tabs

PropTypeRequiredDescription
tabsarrayyesAn array of objects, where each object defines a tab with a title and a child component.
PropTypeRequiredDescription
triggerComponentIdyesThe ID of the component that opens the modal when interacted with (e.g., a button). Do NOT define the component inline.
contentComponentIdyesThe ID of the component to be displayed inside the modal. Do NOT define the component inline.

Divider

PropTypeRequiredDescription
axisenumnoThe orientation of the divider. One of: horizontal, vertical. Default: horizontal.

Button

PropTypeRequiredDescription
childComponentIdyesThe ID of the child component. Use a ‘Text’ component for a labeled button. Only use an ‘Icon’ if the requirements explicitly ask for an icon-only button. Do NOT define the child component inline.
variantenumnoA hint for the button style. If omitted, a default button style is used. ‘primary’ indicates this is the main call-to-action button. ‘borderless’ means the button has no visual border or background, making its child content appear like a clickable link. One of: default, primary, borderless. Default: default.
actionActionyes

Accepts client-side validation checks (A2UI Checkable).

TextField

PropTypeRequiredDescription
labelDynamicStringyesThe text label for the input field.
valueDynamicStringnoThe value of the text field.
variantenumnoThe type of input field to display. One of: longText, number, shortText, obscured. Default: shortText.
validationRegexpstringnoA regular expression used for client-side validation of the input.

Accepts client-side validation checks (A2UI Checkable).

CheckBox

PropTypeRequiredDescription
labelDynamicStringyesThe text to display next to the checkbox.
valueDynamicBooleanyesThe current state of the checkbox (true for checked, false for unchecked).

Accepts client-side validation checks (A2UI Checkable).

ChoicePicker

A component that allows selecting one or more options from a list.

PropTypeRequiredDescription
labelDynamicStringnoThe label for the group of options.
variantenumnoA hint for how the choice picker should be displayed and behave. One of: multipleSelection, mutuallyExclusive. Default: mutuallyExclusive.
optionsarrayyesThe list of available options to choose from.
valueDynamicStringListyesThe list of currently selected values. This should be bound to a string array in the data model.
displayStyleenumnoThe display style of the component. One of: checkbox, chips. Default: checkbox.
filterablebooleannoIf true, displays a search input to filter the options. Default: false.

Accepts client-side validation checks (A2UI Checkable).

Slider

PropTypeRequiredDescription
labelDynamicStringnoThe label for the slider.
minnumbernoThe minimum value of the slider. Default: 0.
maxnumberyesThe maximum value of the slider.
valueDynamicNumberyesThe current value of the slider.

Accepts client-side validation checks (A2UI Checkable).

DateTimeInput

PropTypeRequiredDescription
valueDynamicStringyesThe selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string.
enableDatebooleannoIf true, allows the user to select a date. Default: false.
enableTimebooleannoIf true, allows the user to select a time. Default: false.
minDynamicStringnoThe minimum allowed date/time in ISO 8601 format.
maxDynamicStringnoThe maximum allowed date/time in ISO 8601 format.
labelDynamicStringnoThe text label for the input field.

Accepts client-side validation checks (A2UI Checkable).

Structural & display

Avatar

A user/entity avatar showing an image with a text fallback (e.g. initials).

PropTypeRequiredDescription
srcDynamicStringnoURL of the avatar image.
altDynamicStringnoAccessibility text for the avatar.
fallbackDynamicStringnoText shown when no image is available (e.g. initials).
sizeenumnoA hint for the avatar size. One of: sm, md, lg. Default: md.

AvatarGroup

A horizontally overlapping group of Avatar components.

PropTypeRequiredDescription
childrenChildListyesThe Avatar components to group, referenced by ID.
maxnumbernoMaximum avatars to show before collapsing the rest into a “+N” badge.
sizeenumnoUniform size for every avatar and the “+N” badge, so the whole group scales together. Defaults to the base avatar size. One of: sm, md, lg.

Kbd

Renders one or more keyboard keys (e.g. [“Ctrl”, “K”]).

PropTypeRequiredDescription
keysDynamicStringListyesThe keyboard keys to display, in order.

Alert

A callout banner conveying status or an important message.

PropTypeRequiredDescription
titleDynamicStringnoThe alert title.
descriptionDynamicStringnoThe alert body text.
variantenumnoThe severity/intent of the alert. One of: info, success, warning, destructive. Default: info.

Badge

A small status/label chip.

PropTypeRequiredDescription
labelDynamicStringyesThe badge text.
variantenumnoA hint for the badge style. One of: default, secondary, destructive, success, warning, info, neutral. Default: default.

Stepper

A sequence of ordered steps with a current active step.

PropTypeRequiredDescription
stepsarrayyesThe ordered steps.
valueDynamicNumbernoThe zero-based index of the current active step.
orientationenumnoThe layout orientation of the stepper. One of: horizontal, vertical. Default: horizontal.

ButtonGroup

A set of related Button components grouped together.

PropTypeRequiredDescription
childrenChildListyesThe Button components to group, referenced by ID.
orientationenumnoThe layout orientation of the group. One of: horizontal, vertical. Default: horizontal.

A horizontally swipeable set of slides.

PropTypeRequiredDescription
childrenChildListyesThe slide components, referenced by ID.
orientationenumnoThe scroll orientation. One of: horizontal, vertical. Default: horizontal.
loopbooleannoIf true, the carousel loops back to the start after the last slide. Default: false.

ToggleGroup

A group of toggle buttons supporting single or multiple selection.

PropTypeRequiredDescription
optionsarrayyesThe toggle options.
valueDynamicStringListyesThe currently selected value(s), bound to a string array.
variantenumnoWhether one or multiple options may be selected at once. One of: single, multiple. Default: single.

Accepts client-side validation checks (A2UI Checkable).

Accordion

A vertically stacked set of collapsible sections.

PropTypeRequiredDescription
itemsarrayyesThe collapsible sections.
typeenumnoWhether one or multiple sections may be open at once. One of: single, multiple. Default: single.

ScrollArea

A scrollable viewport wrapping a single child component.

PropTypeRequiredDescription
childComponentIdyesThe ID of the child component to make scrollable. Do NOT define it inline.
maxHeightstringnoMaximum height before scrolling (CSS length, e.g. ‘320px’).
orientationenumnoThe scroll orientation. One of: vertical, horizontal, both. Default: vertical.

Separator

A visual separator line with an optional label.

PropTypeRequiredDescription
axisenumnoThe orientation of the separator. One of: horizontal, vertical. Default: horizontal.
labelDynamicStringnoOptional text centered on the separator.

Table

A simple tabular display. Columns are declared statically; rows are bound to an array in the data model.

PropTypeRequiredDescription
columnsarrayyesThe column definitions, in display order.
rowsDataBindingyesA data binding to an array of row objects. Each object is keyed by the column keys.
captionDynamicStringnoOptional table caption.

Rich

Markdown

Renders Markdown content. Tolerates incomplete/streamed Markdown (e.g. an unterminated emphasis or code fence mid-stream); bind content to a data path that the agent appends to. This is the preferred component for rich textual answers.

PropTypeRequiredDescription
contentDynamicStringyesThe Markdown source to render. May be streamed/partial.

Timeline

A vertical sequence of time-ordered events.

PropTypeRequiredDescription
itemsarrayyesThe timeline entries, in order.

An app-like layout shell with a collapsible side panel and a main content area, for surfaces that drive a fuller UI.

PropTypeRequiredDescription
contentComponentIdyesThe ID of the main content component. Do NOT define it inline.
headerComponentIdnoOptional ID of a component rendered at the top of the side panel.
footerComponentIdnoOptional ID of a component rendered at the bottom of the side panel.
sideenumnoWhich side the panel is anchored to. One of: left, right. Default: left.

Combobox

A single-select input with a searchable dropdown of options.

PropTypeRequiredDescription
labelDynamicStringnoThe input label.
placeholderDynamicStringnoPlaceholder text when empty.
optionsarrayyesThe selectable options.
valueDynamicStringyesThe currently selected value, bound to a string in the data model.

Accepts client-side validation checks (A2UI Checkable).

MultiSelect

A multi-select input with a searchable dropdown of options.

PropTypeRequiredDescription
labelDynamicStringnoThe input label.
placeholderDynamicStringnoPlaceholder text when empty.
optionsarrayyesThe selectable options.
valueDynamicStringListyesThe currently selected values, bound to a string array in the data model.
maxSelectednumbernoOptional maximum number of selectable options.

Accepts client-side validation checks (A2UI Checkable).

Chart

A data visualization rendered via @meldui/charts-vue.

PropTypeRequiredDescription
chartTypeenumyesThe kind of chart to render. One of: line, bar, area, pie, scatter.
dataDataBindingyesA data binding to the series/array the chart visualizes.
titleDynamicStringnoOptional chart title.

Functions

A2UI functions available for data bindings and validation checks.

FunctionDescription
requiredChecks that the value is not null, undefined, or empty.
regexChecks that the value matches a regular expression string.
lengthChecks string length constraints.
numericChecks numeric range constraints.
emailChecks that the value is a valid email address.
formatStringPerforms string interpolation of data model values and other functions in the catalog functions list and returns the resulting string. The value string can contain interpolated expressions in the ${expression} format. Supported expression types include: JSON Pointer paths to the data model (e.g., ${/absolute/path} or ${relative/path}), and client-side function calls (e.g., ${now()}). Function arguments must be named (e.g., ${formatDate(value:${/currentDate}, format:'MM-dd')}). To include a literal ${ sequence, escape it as \\${.
formatNumberFormats a number with the specified grouping and decimal precision.
formatCurrencyFormats a number as a currency string.
formatDateFormats a timestamp into a string using a pattern.
pluralizeReturns a localized string based on the Common Locale Data Repository (CLDR) plural category of the count (zero, one, two, few, many, other). Requires an ‘other’ fallback. For English, just use ‘one’ and ‘other’.
openUrlOpens the specified URL in a browser or handler. This function has no return value.
andPerforms a logical AND operation on a list of boolean values.
orPerforms a logical OR operation on a list of boolean values.
notPerforms a logical NOT operation on a boolean value.

Theme

Theme tokens an agent may set on createSurface (renderer maps these onto MeldUI design tokens).

TokenTypeDescription
primaryColorstringThe primary brand color used for highlights (e.g., primary buttons, active borders). Renderers may generate variants of this color for different contexts. Format: Hexadecimal code (e.g., ‘#00BFFF’).
iconUrlstringA URL for an image that identifies the agent or tool associated with the surface.
agentDisplayNamestringText to be displayed next to the surface to identify the agent or tool that created it.