section element
A thematic band of a page — a hero, a feature list, a footer call to action.
Renders
<section>Required
Nothing beyond
type.Native apps
Compiled native apps and server-driven apps
Syntax
section element
{ "type": "section" }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
section example
{
"type": "section",
"id": "features",
"layout": { "direction": "column", "align": "center", "gap": "12px" },
"style": { "padding": "48px 24px", "textAlign": "center" },
"elements": [
{ "type": "text", "variant": "h2", "content": "Why customers choose us" },
{ "type": "text", "content": "Same-day dispatch and free returns." }
]
}Give a section an id and a button with action: "scroll" (or a link to #features) can jump to it.
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">
<section class="iwc-section ic3ec7500" id="features">
<h2 class="iwc-text i1d6e840c iwc-text-h2">
Why customers choose us
</h2>
<p class="iwc-text i6fe7f5e7">
Same-day dispatch and free returns.
</p>
</section>
</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.