container element
A generic wrapper that groups other elements so they can be styled, laid out or shown together.
Renders
<div>Required
Nothing beyond
type.Native apps
Compiled native apps and server-driven apps
Syntax
container element
{ "type": "container" }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 |
|
columns | integer (1–24)string | |
responsiveColumns | object {name: integer (1–24)} | grid columns per breakpoint |
gap | string | |
content | string | literal text, or an expression starting with = ("=product.name") |
bind | string | take content from data: a field of the current item, or props.x, user.x, params.x, state.store.path |
tag | "div""span""p""section""article""aside""header""footer""nav""main""figure""figcaption""ul""ol""li""dl""dt""dd""blockquote""address""time""small""strong""em""b""i""s""u""mark""cite""q""abbr""sub""sup""del""ins""code""pre""kbd""label""hgroup""h1""h2""h3""h4""h5""h6""details""summary""button" | the HTML tag a container or text element renders as, e.g. "ul", "li", "article", "figure" |
data | object |
|
item | element | |
empty | element | |
vars | object {name: string} | CSS custom properties set from data, per record: {"--accent": "=color", "--progress": "=concat(pct, '%')"}; your stylesheet uses var(--accent) |
Plus the properties every element accepts: id, className, style, responsive, states, animation, visible, ariaLabel, attributes and more.
Example
container example
{
"type": "container",
"className": "notice",
"style": {
"padding": "16px",
"borderRadius": "12px",
"background": "var(--color-surface)"
},
"elements": [{ "type": "text", "variant": "label", "content": "Free delivery over ₹999" }]
}Use container when no more specific tag (section, article through tag, header…) describes the content. Add layout for flexbox or columns for a grid; with neither it is a plain block.
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-container i333784bd notice">
<span class="iwc-text icc1180bf iwc-text-label">Free delivery over ₹999</span>
</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.