Menu
The Menu block renders a vertical list of clickable items — each with a label, optional caption, start/end icon or image, and a default or danger style. It works in two modes: Static (you compose the item list by hand) and Mapped (items are generated from a bound data source). Items can be plain Label items or Confirmation items that require a second click before acting. A new Menu arrives with three starter items at full width.
Tip: When to use Menu: Offer a flat list of actions or choices — row actions, quick links, a settings list. Build the list from data with Mapped mode. Add inline confirmation for destructive actions. For hierarchical navigation with nested items and links, use Navigation Menu instead.
Properties
Content
| Property | Type | Default | Description |
type | "STATIC" | "DYNAMIC" | STATIC | Static: hand-built item list. Mapped (Dynamic): generated from a bound data source. |
data | array (binding) | — | Mapped only. (optional) The bound data source whose rows become menu items. |
menuItems | item list | Three starter items | Static only. (optional) The hand-built item list. |
initialSelectedMenuItemId | string | — | The item that starts out selected when the menu loads. |
menuItem | item template | type label, variant default | Mapped only. (optional) Template applied to every row: Id, Label, Caption mapped from columns; Type, Variant, icons set once. |
Per-Item Settings (Static Mode)
Each item in the Static list opens a detail panel with its own settings:
| Property | Type | Default | Description |
type | "label" | "confirmation" | label | confirmation asks for a second click before firing. |
value | string | — | The item's identifier — appears in selected state. |
label | string | — | The visible item text. |
caption | string | — | Secondary text under the label. |
confirmationLabel | string | — | Text shown after the first click. Appears when type = confirmation. |
appearance.variant | "default" | "danger" | default | Danger styles the item red for destructive actions. |
appearance.startDecorator | icon or image | — | Icon or image before the label. |
appearance.endDecorator | icon or image | — | Icon or image after the label. |
Appearance
| Property | Type | Default | Description |
size | "sm" | "md" | md | Compact or regular item height. |
styles | style set | w-full | Width/min/max, height/min/max, flex layout, margin, padding, gap. |
Events
| Event | Trigger | Available when |
On Click | That specific item is clicked (on each item) | Static mode |
On Menu Item Click | Any generated item is clicked | Mapped mode |
Methods
| Method | Params | Effect |
selectMenuListItem | menuItemId | Marks the item as selected without firing any click event. Passing an unknown id clears the selection. |
Exposed State
| State key | Type | Description |
{{ id.selectedItem.id }} | string | Id of the last clicked or programmatically selected item. |
{{ id.selectedItem.label }} | string | Label of that item. |
Behavior & Gotchas
Warning: The whole menu disappears when it has no items to show. A Static menu whose items are all hidden and a Mapped menu with an empty data source render nothing at all — no placeholder.
Warning: Click events are wired differently in the two modes. Static: each item has its own On Click. Mapped: one block-level On Menu Item Click fires for all items. Switching modes means re-wiring events.
Note: A confirmation item stays confirming — there is no timeout. The item's text changes to its Confirmation Label and waits for a second click. There is no automatic revert.
Note: selectMenuListItem fires no event. It updates state but does not fire On Click or On Menu Item Click.
Examples
Navigation Menu
The Navigation Menu block (shown as "Navigation" in the block picker) renders a list of navigation items — a vertical sidebar or a horizontal top bar — and tracks which one is currently active. Each item is either a leaf (a single selectable tab drawn as a Custom entry or a Page link) or a Group that nests other items. Pair it with a Navigation Container and the container swaps its content whenever the menu's selection changes.
Tip: When to use Navigation Menu: Build the primary navigation for an interface — left sidebar or top bar — where one item stays highlighted as the active section. Group related destinations under a collapsible parent. Link items directly to static pages, or keep them Custom and drive your own content region.
Properties
Content
| Property | Type | Default | Description |
items | item list | — | The navigation items. Each can be a leaf (Custom or Page) or a Group nesting other items. |
direction | "vertical" | "horizontal" | vertical | Sidebar or top bar orientation. |
initialSelectedItemId | string | — | The item that starts out active when the menu loads. |
Per-Item Settings
| Property | Type | Description |
label | string | The item's visible text. Bindable, translatable. |
variant | "page" | "custom" | Page links to a static interface page; Custom lets you wire your own content. |
startDecorator | icon name | Icon shown before the label. |
visibility | condition | Hides the item when false. |
permissions | rule | Hides the item from users who lack access. |
Exposed State
| State key | Type | Description |
{{ id.selectedItem.id }} | string | The currently active item's id. |
{{ id.selectedItem.label }} | string | The currently active item's label. |
Behavior & Gotchas
Note: Pair with Navigation Container for content switching. The menu is the control; the container is the content area it drives. Set the container's content source to the navigation menu's selected item.
Warning: Group items don't themselves have click actions. Groups are collapsible parent nodes — clicking them expands or collapses nested items rather than selecting the group itself.
Navigation Container
The Navigation Container block renders different content depending on the selected item in a Navigation Menu. When the menu's active item changes, the container swaps the visible page or block to match. It is the content region paired with the Navigation Menu control.
Tip: When to use Navigation Container: Build a tabbed or routed content area whose visible pane changes when the user selects a nav item. The container handles the swap; the Navigation Menu handles the selection tracking.
Properties
| Property | Type | Default | Description |
navigationMenuBlockId | block reference | — | The Navigation Menu block that drives this container's content. |
items | item list | — | A content slot for each navigable tab — each maps to a navigation item's id and holds child blocks. |
Examples
Related Blocks
| Block | Relationship |
| Button Group (Toggle) | A segmented control for simple view switching without nested groups. |
| Tabs | Full content-switching pattern with visible tab headers. |
| Navigation Container | The content area driven by Navigation Menu selection. |
Frequently Asked Questions
What is the difference between Static and Mapped mode in the Menu block?
In Static mode, you define the menu items manually in the inspector — each item has a fixed label, icon and action. This is best for menus where the options are always the same. In Mapped mode, items are generated from a data source list (like a platform automaton result), and each item's label, icon and click behavior are bound to fields from that data. Use Mapped when the menu content comes from your data, like a list of user actions fetched from a permissions table.
How do I add a confirmation step before a destructive menu action?
In the Menu block's item settings, turn on the Confirmation toggle. A dialog appears when the user selects that item, asking them to confirm before the On Item Click event fires. You can customize the confirmation message and button labels in the item's detail panel.
How does the Navigation Container know which Navigation Menu item was selected?
The Navigation Container reads the Navigation Menu block's currently active item and renders the child blocks assigned to that item's Page or Custom target. You link a Navigation Container to a Navigation Menu by setting the Container's menu reference to the Navigation Menu block's ID. There is no event wiring needed — it's a declarative binding.
Can I have both Group and leaf items at the same level in a Navigation Menu?
Yes. A Navigation Menu can mix Group items (which expand to show child items) and leaf items (which navigate or fire On Item Click) at the same level of the hierarchy. Groups can also be nested — a Group can contain other Groups. The menu renders the structure you define in the items tree.