Intelligent App YAML Reference
This page provides a detailed reference for all attributes available in Intelligent App YAML definitions. Use this as a guide when authoring or reviewing your app configuration files.Top-Level Structure
config Section
Style Configuration
Available themes: “default”, “teal”, “blue”, “green”, “purple”, “orange”, “amber”, “mono”
Custom Style Attributes
You can override theme colors using Tailwind CSS variables in HSL format. This allows fine-grained control over your app’s appearance:
Colors must be specified in HSL format without the
hsl() wrapper (e.g., “220 23% 95%” instead of “hsl(220, 23%, 95%)”).layout Section
Defines the structure of the app (tabs, items, chart groups).
Layout Items
components Section
Holds the main building blocks: charts, variables, filters, texts, and widgets.
Charts
Composed Chart Example
Example: Bar Chart with Click-to-Filter
Example: Dynamic Chart with Chart Inputs
Chart inputs allow users to modify the query dynamically using interactive controls like dropdowns.Static Options
Dynamic Options
Chart inputs can also fetch their dropdown options dynamically from database queries. This enables data-driven dropdowns and cascading input scenarios where one input’s value affects another input’s options.Chart inputs work with all chart types and seamlessly integrate with Jinja templating, allowing you to create highly dynamic and interactive visualizations.
- Filter-Dependent Options: Chart input options can change based on active tab-level filters
- Cascading Inputs: One input’s value can affect another input’s available options
- Template Variables: Use both tab-level filters and other chart input values in your
options_query
You cannot define both
options and options_query for the same chart input. Use options for static lists and options_query for dynamic, data-driven dropdowns.Example: Pie Chart with Click-to-Filter
Example: Heatmap Chart
Heatmap charts require exactly 2 dimensions and at least 1 metric.
Example: Conditional Chart Visibility
You can conditionally hide charts based on the query result data usinghide_expression. The expression receives the data array and should return true to hide the chart:
The
hide_expression is a JavaScript function that receives the data parameter (an array of query results) and must return a boolean value. Return true to hide the chart, or false to show it.Example: Scatter Plot Chart
Scatter plot charts require exactly 1 dimension and 2-3 metrics. The first metric is plotted on the x-axis, the second metric on the y-axis, and an optional third metric can be used for additional visualization properties.
Example: Custom Chart
Variables
Filters
Texts
Markdown text components allow adding rich textual content to your apps.Widgets
Custom React (TSX) components rendered inside the app grid. See Components: Widgets for the component contract.
Layout usage with a widget item:
Example:
The component must
export default a React component. It receives data (query rows, or an empty array when no query is set) and appContext (filters, setFilter, theme). Only react and @datazone/widget-sdk can be imported.Item Lists
List-style chart type. Each row supports icon, title, description, optional timestamp, and badge. Query result fields:Example:
Example
Example for Number Chart Metrics
numbercharts support 1-2 metrics: one main metric and optionally one secondary metric (submetric)radialcharts support the same metric configuration asnumbercharts- Use
submetric_nameandsubmetric_typeto display a secondary metric below the main value submetric_typeoptions:plain(just show the value),change(show percentage change),delta(show difference)- For a full list of Lucide icons, see lucide.dev/icons
icon_variantmust be one of:default,neutral,success,warning,error
Value Format Strings
All Intelligent App value formattings use Numeral.js formatting strings. Examples:Notes
- All attributes are case-sensitive.
- Use Jinja templating for dynamic queries.
- See Query Manipulation for advanced usage.
- For more examples, see example_intelligent_app.yaml.