nav element
A group of navigation links, such as a sidebar menu or footer links.
Renders
<nav> with an <a> per itemRequired
items or elements.Native apps
Compiled native apps and server-driven apps
Syntax
nav element
{ "type": "nav" }An element lives in a screen's sections, another element's elements, a layout slot or a component root.
Properties
| Property | Type | Description |
|---|---|---|
items | array of item | |
elements | array of element | |
layout | object |
|
Plus the properties every element accepts: id, className, style, responsive, states, animation, visible, ariaLabel, attributes and more.
Events & actions
Each item navigates to its target. The item matching the current page gets aria-current="page".
Example
nav example
{
"type": "nav",
"className": "side-nav",
"items": [
{ "label": "Overview", "target": "/dashboard" },
{ "label": "Orders", "target": "/orders" },
{ "label": "Settings", "target": "/settings" }
]
}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">
<nav class="iwc-nav i5073ae11 side-nav">
<a href="/dashboard">Overview</a><a href="/orders">Orders</a><a href="/settings">Settings</a>
</nav>
</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.