Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Navigation",
"description": "Navigates to an internal or external URL.",
"type": "object",
"examples": [
{
"title": "Open an external link",
"description": "In-app routes push a Flutter route in the tenant app. External URLs (Target: blank) open in a new tab. In the playground, external URLs open normally; in-app pushes just log because there are no target routes here.",
"document": {
"PresentationType": "Button",
"Text": "Open zero.app docs",
"Icon": "book",
"BorderRadius": 6,
"Color": "#FFFFFF",
"BackgroundColor": "#2F6FED",
"OnClick": {
"Handler": "Navigation",
"Url": "https://docs.zero.app",
"Target": "blank"
}
}
},
{
"title": "In-app navigation",
"description": "Without Target the router pushes an in-app route. Interpolation works — this URL is built from a Context value.",
"document": {
"PresentationType": "Button",
"Text": "Go to product",
"BorderRadius": 6,
"Color": "#FFFFFF",
"BackgroundColor": "#2F6FED",
"OnClick": {
"Handler": "Navigation",
"Url": "/products/{{ Context.Model.SelectedId }}"
}
}
}
],
"x-version": "1.0",
"required": [
"Handler",
"Url"
],
"properties": {
"Handler": {
"const": "Navigation"
},
"Url": {
"type": "string"
},
"Target": {
"type": "string"
},
"Value": {},
"OnSuccess": {
"$ref": "/schema/Actions/Action/1.0/index.json"
},
"OnFailure": {
"$ref": "/schema/Actions/Action/1.0/index.json"
}
},
"additionalProperties": false,
"x-icon": "<svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 11l18-8-8 18-2.2-7.8z\"/></svg>",
"$id": "/schema/Actions/Navigation/1.0/index.json",
"x-family": "Actions",
"x-name": "Navigation",
"x-source-package": "zero-schema"
}
In-app routes push a Flutter route in the tenant app. External URLs (Target: blank) open in a new tab. In the playground, external URLs open normally; in-app pushes just log because there are no target routes here.
{
"PresentationType": "Button",
"Text": "Open zero.app docs",
"Icon": "book",
"BorderRadius": 6,
"Color": "#FFFFFF",
"BackgroundColor": "#2F6FED",
"OnClick": {
"Handler": "Navigation",
"Url": "https://docs.zero.app",
"Target": "blank"
}
}
Without Target the router pushes an in-app route. Interpolation works — this URL is built from a Context value.
{
"PresentationType": "Button",
"Text": "Go to product",
"BorderRadius": 6,
"Color": "#FFFFFF",
"BackgroundColor": "#2F6FED",
"OnClick": {
"Handler": "Navigation",
"Url": "/products/{{ Context.Model.SelectedId }}"
}
}