For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/v0.4.1/en/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/v0.4.1/en/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/v0.4.1/en/components/form-system/layouts.md.

Layouts and supporting content

Layout nodes organize the interface without changing the controlled value structure. Fields continue to bind data through schemaPath, while containers use children to define order and nesting. Every example uses the real FormRenderer and the A3S UI style entry point.

Common container properties

PropertyTypeRequiredDescription
idstringYesStable identifier unique within the document
kind"group" | "section"YesPlain container or semantic section
layoutUiLayoutYesArrangement used by the container
childrenstring[]YesDirect children rendered in array order
labelstringNoContainer title; tabs, collapse panels, and wizard pages use it as their navigation label
descriptionstringNoSupporting guidance below the container title
columns1 | 2 | 3 | 4 | 6 | 12NoInternal grid columns; defaults to 12
width1–12NoWidth occupied by this container in its parent's 12-column grid
gap0 | 8 | 12 | 16 | 24 | 32NoSpace between children in CSS pixels

Narrow containers collapse side-by-side fields and column groups into one column. Responsive behavior uses the Form container width, not the browser viewport, so the same layout works in a sidebar, dialog, or workspace node.

Grid container grid

Use a grid container for parameter panels where fields need different widths. Each child's width determines its span, and columns defines the internal grid width.

实时示例12 列栅格 · 字段宽度 · 容器间距

运行参数

字段按 12 列宽度排列。

受控值
{
  "model": "large",
  "timeout": 60
}
PropertyRecommended valuePurpose
kind"group"Creates a layout container without extra business semantics
layout"grid"Enables explicit grid placement
columns12Aligns with the 12-column field width contract
gap12 or 16Controls row and column spacing
Child width1–12For example, 8 + 4 or 6 + 6
{
  id: 'runtime-grid',
  kind: 'group',
  layout: 'grid',
  columns: 12,
  gap: 16,
  children: ['model', 'timeout'],
}

Two-column layout columns-2

columns-2 is a Designer preset. It creates an outer layout: "columns" container and two inner groups with width: 6. Each column can contain fields, cards, or other layouts.

实时示例两个等宽投放区 · 各栏独立布局

连接设置

服务地址

失败处理

受控值
{
  "endpoint": "https://api.a3s.dev",
  "retries": 3
}
NodeKey propertiesPurpose
Outer containerlayout: "columns", columns: 12Manages column order and spacing
Left columnkind: "group", width: 6First drop region
Right columnkind: "group", width: 6Second drop region
Inner fieldswidth: 1–12Use the column's own 12-column grid

Use two columns when two items benefit from direct comparison. Do not force long guidance, addresses, or multiline inputs into a narrow column.

Three-column layout columns-3

columns-3 is also a Designer preset. Its three inner groups each use width: 4. It works well for short values and related parameters, but not for long text or complex composite fields.

实时示例三个等宽投放区 · 窄容器自动改单列

执行资源

受控值
{
  "region": "ap-east-1",
  "concurrency": 4,
  "timeout": 90
}
NodeKey propertiesPurpose
Outer containerlayout: "columns", columns: 12Manages column order and spacing
Each columnkind: "group", width: 4Independent drop region
Inside each columnlayout: "flow", columns: 12Allows independent inner field widths

In a narrow container, all three columns automatically stack while preserving children order.

Card group card

Use cards for a business group with a meaningful title and description. kind: "section" provides grouping semantics, and layout: "card" uses the A3S UI Card surface.

实时示例语义分组 · 标题与说明 · A3S UI Card

服务配置

修改当前节点使用的服务和状态。

受控值
{
  "service": "knowledge-search",
  "enabled": true
}
PropertyRecommended valuePurpose
kind"section"Expresses an independent content group
layout"card"Uses the A3S UI Card style
labelShort titleStates the shared purpose of the fields
descriptionOne sentenceAdds only necessary completion guidance
childrenFields or layout nodesAvoids another card layer without useful information

Do not wrap every field on a page in a card. Use a card only when its title, description, and fields form one complete task.

Tabs tabs

Tabs suit peer settings that do not have to be completed in order. The outer node uses layout: "tabs"; every direct child must be a group or section with layout: "tab".

实时示例标准 Tab 语义 · 键盘切换 · 本地活动状态

节点设置

受控值
{
  "displayName": "知识检索",
  "temperature": 0.4
}
NodePropertyDescription
Tab containerlayout: "tabs"Manages the active tab without writing to the form value
Tablayout: "tab"Direct child of the tab container
Tab nameChild labelVisible and accessible tab name
Tab contentChild childrenFields and layouts rendered in that tab

The runtime exposes tablist, tab, and tabpanel semantics and supports Left Arrow, Right Arrow, Home, and End. Use a wizard for ordered steps with progressive validation and review; do not simulate steps with tabs.

Collapse panels collapse

Collapse panels suit infrequent or advanced settings. The outer node uses layout: "collapse", and its direct children use layout: "collapse-panel".

实时示例原生 Details 语义 · 独立展开状态

高级设置

提示词
输出限制
受控值
{
  "systemPrompt": "只返回可核验的信息。",
  "maxTokens": 2048
}
NodePropertyDescription
Collapse containerlayout: "collapse"Manages a collection of expandable content
Collapse panellayout: "collapse-panel"Direct child of the collapse container
Panel nameChild labelCopy for the native summary
Panel contentChild childrenFields and layout nodes inside the panel

The runtime uses native details and summary, leaving keyboard behavior, expanded state, and assistive-technology semantics to the browser. Do not hide required fields in a closed-by-default panel without an error indicator.

Supporting text content

Supporting text uses kind: "content" with presentation: "text". It displays static copy without creating a Schema property or writing to the controlled value.

实时示例静态说明 · 不写入受控值
仅在连接成功后启用自动执行。
受控值
{}
PropertyTypeDescription
kind"content"Fixed value for supporting content
presentation"text"Plain text presentation
contentstringText displayed directly
width12-column widthSpan in the parent grid

Supporting text should contain only information needed to complete the form. Dynamic data, rich text, and executable links belong in an approved host component.

Divider divider

A divider separates adjacent content regions. Leave content empty for a line, or set it to display a short label in the middle.

实时示例内容分隔 · 可选标题
基础参数

高级参数
失败重试与超时设置
受控值
{}
PropertyTypeDescription
kind"content"Fixed value for supporting content
presentation"divider"Divider presentation
contentstringOptional divider label
width12-column widthControls divider length

A divider does not replace structure. Prefer a section or card when the content has a meaningful title.

Spacer spacer

A spacer provides controlled vertical whitespace. It is hidden from assistive technology and creates neither copy nor a form value.

实时示例固定垂直间距 · 对辅助技术隐藏
上方内容
下方内容
受控值
{}
PropertyTypeDescription
kind"content"Fixed value for supporting content
presentation"spacer"Spacer presentation
gap8 | 12 | 16 | 24 | 32Spacer height; defaults to 24
width12-column widthSpan in the parent layout

Use spacers sparingly where extra breathing room is necessary. Container gap should maintain the page's base rhythm.

A3S UI style entry point

import '@a3s-lab/ui/form/a3s-ui.css';

This entry point loads @a3s-lab/ui and the Form layout layer. Fields continue to use A3S UI input, textarea, select, field, and fieldset contracts, while containers reuse Card, Tabs, and Accordion surfaces and interaction states. If the host already loads A3S UI, use @a3s-lab/ui/form/styles.css to avoid installing global styles twice.