Documentation Index
Fetch the complete documentation index at: https://developer.kodexa.ai/llms.txt
Use this file to discover all available pages before exploring further.
Layout components structure the visual arrangement of a data form. They act as containers that hold other components — including both data components and other layout components — to create the form’s hierarchy.
v2:panel
The primary container for grouping form content. Panels render a bordered card with an optional title bar and support collapsing, grid-column spanning, repeating over data objects, and service bridge integration.
| Prop | Type | Default | Description |
|---|
title | string | — | Heading displayed in the panel title bar |
collapsible | boolean | false | When true, adds a toggle to collapse/expand the panel body |
colSpan | number (1-12) | — | Number of grid columns the panel should span |
groupTaxon | string | — | Taxonomy path; creates a tab for each data object at that path. See Data Binding |
serviceBridge | ServiceBridgeConfig | — | Connects the panel to an external API via a service bridge. See Bridge API |
Supports children: yes
{
"component": "v2:panel",
"props": {
"title": "Claim Details",
"collapsible": true
},
"children": []
}
v2:tabs
A tabbed container that renders each direct child as a separate tab. Tab labels are derived from each child’s title prop by default, or can be set explicitly with the tabs array.
| Prop | Type | Default | Description |
|---|
title | string | — | Title for the tabs component itself |
icon | string | — | Icon identifier displayed alongside the title |
tabs | string[] | — | Explicit tab labels; when omitted, labels are auto-detected from child title props |
Supports children: yes
{
"component": "v2:tabs",
"props": {
"tabs": ["Income", "Expenses"]
},
"children": [
{
"component": "v2:panel",
"props": { "title": "Income" },
"children": []
},
{
"component": "v2:panel",
"props": { "title": "Expenses" },
"children": []
}
]
}
v2:row
A horizontal flex container that lays out its children in a row with wrapping. The default gap between children is gap-x-4 gap-y-1 (Tailwind utility classes applied automatically).
| Prop | Type | Default | Description |
|---|
gap | number | — | Custom gap override (in pixels) |
Supports children: yes
v2:col
A column within a 12-column grid system. Columns calculate their width as a fraction of 12 and account for gap spacing between siblings automatically.
| Prop | Type | Default | Description |
|---|
span | number (1-12) | auto | Number of grid columns to occupy |
gap | number | 16 | Gap between sibling columns in pixels |
When span is omitted, the column auto-calculates its width based on the number of sibling columns. For example, three columns in a row each receive an effective span of 4 (12 / 3).
Supports children: yes
{
"component": "v2:row",
"children": [
{
"component": "v2:col",
"props": { "span": 6 },
"children": []
},
{
"component": "v2:col",
"props": { "span": 6 },
"children": []
}
]
}
v2:divider
A horizontal separator line used to visually break sections within a panel or other container.
| Prop | Type | Default | Description |
|---|
class | string | my-4 border-border | CSS class override for custom styling |
Supports children: no
v2:alert
A colored message box for displaying notices, warnings, or status messages within a form.
| Prop | Type | Default | Description |
|---|
type | "info" | "warning" | "success" | "error" | "info" | Controls the alert color scheme |
text | string (required) | — | Message body |
strong | string | — | Bold prefix text displayed before the message body |
Supports children: no
{
"component": "v2:alert",
"props": {
"type": "warning",
"strong": "Attention:",
"text": "This claim has unresolved exceptions."
}
}
Composite Example
The following example combines several layout components into a realistic form structure: a panel containing a two-column row, a divider, and an alert.
{
"version": "2",
"nodes": [
{
"component": "v2:panel",
"props": {
"title": "Policy Overview",
"collapsible": true
},
"children": [
{
"component": "v2:row",
"children": [
{
"component": "v2:col",
"props": { "span": 6 },
"children": [
{
"component": "v2:attributeEditor",
"props": { "tagPath": "Policy/PolicyNumber" }
}
]
},
{
"component": "v2:col",
"props": { "span": 6 },
"children": [
{
"component": "v2:attributeEditor",
"props": { "tagPath": "Policy/EffectiveDate" }
}
]
}
]
},
{
"component": "v2:divider"
},
{
"component": "v2:alert",
"props": {
"type": "info",
"strong": "Note:",
"text": "Review both columns before approving."
}
}
]
}
]
}
The panel wraps everything with a collapsible title bar. Inside, a row splits two attribute editors into equal columns (span 6 each). A divider separates the editors from an informational alert at the bottom.