row element
Places children side by side in a flex row.
Renders
<div> with display: flex; flex-direction: rowRequired
Nothing beyond
type.Native apps
Compiled native apps and server-driven apps
Syntax
row element
{ "type": "row" }An element lives in a screen's sections, another element's elements, a layout slot or a component root.
Properties
| Property | Type | Description |
|---|---|---|
elements | array of element | |
layout | object |
|
gap | string | |
content | string | literal text, or an expression starting with = ("=product.name") |
data | object |
|
item | element | |
empty | element |
Plus the properties every element accepts: id, className, style, responsive, states, animation, visible, ariaLabel, attributes and more.
Example
row example
{
"type": "row",
"layout": { "align": "center", "justify": "between", "gap": "16px", "wrap": true },
"responsive": { "mobile": { "flexDirection": "column" }},
"elements": [
{ "type": "text", "variant": "h3", "content": "Your basket" },
{ "type": "button", "label": "Checkout", "action": "navigate", "target": "/checkout" }
]
}layout.justify takes between, around and evenly — not space-between. Stack a row on phones with responsive.
Expected output
The HTML IWC rendered for the example above (inside the page's content wrapper). Class names such as i807b63fc are generated per element for its scoped CSS.
Rendered HTML
<div class="iwc-page ipage" id="iwc-content">
<div class="iwc-row i8f703a64">
<h3 class="iwc-text id0ee350e iwc-text-h3">
Your basket
</h3>
<a class="iwc-button id027a230 iwc-button-primary" href="/checkout">Checkout</a>
</div>
</div>Data, conditions & styling
- Conditional rendering:
"visible": {"auth": "signed-in"},{"roles": ["admin"]}or an expression such as"=product.stock > 0". Decided on the server: hidden elements are never sent. - Data binding:
bindtakes text from data (name,user.name,props.title,params.slug,state.cart.count);bindsbinds attributes. Containers become data-driven withdata+item. See data binding. - Styling:
classNamefor your stylesheets,stylefor CSS in JSON,statesfor hover/focus/active,animationfor entrance motion. See the style property reference. - Responsive behaviour:
responsiveapplies CSS at or below a breakpoint ({"mobile": {"padding": "12px"}}); grids also takeresponsiveColumns.