HyperPBI component catalog reference
Project: hyperpbi.com · Source: austinwin/hyperpbi
HyperPBI currently defines 82 component types across 12 categories. This file is generated from canonical component descriptors and patternRegistry.ts; strict schema 2.0 validator maps are derived from those descriptors.
For the complete authoring model, see the specification reference, data model, interactions, and SVG reference.
HyperPBI 2.0 shared contract
Every 2.0 component requires type and a globally unique stable id matching ^[A-Za-z][A-Za-z0-9_-]{0,99}$. dataset selects a named logical dataset; omission selects powerbi. Field references use Field Manifest aliases during authoring and are resolved to canonical runtime keys during preparation.
Allowed shared properties:
type, id, dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, order, responsive, heightMode, minHeight, aspectRatio
The three behavior systems are independent: uiAction changes interface state; interaction controls universal internal/Power BI data behavior; interactions maps safe component-specific events to allowlisted payloads. None is mandatory on every component.
External filtering requires a field whose metadata identifies a real model column (sourceTable and sourceColumn). True measures, dataset-derived fields, and dataset metrics cannot directly filter the Power BI model. Exact identity selection can still use source-row lineage when available.
Maturity governance
Maturity is explicit per canonical descriptor and independent of authoring complexity. Stable means the descriptor records renderer, strict schema, applicable field traversal, Inspector controls, valid example, responsive and empty-state behavior, accessibility guidance, focused tests, and documentation evidence. Beta is implemented but misses one or more stable requirements. Experimental is intentionally unstable and advanced. AI includes beta only for explicit/advanced authoring and experimental only when explicitly requested.
Application patterns
Patterns are 2.0 authoring constructs expanded before strict component validation. Generated child IDs are deterministic derivatives of the pattern ID.
kpi-row
Required: id, fields
Optional: title, dataset, variant, span
Field properties: fields
{
"type": "pattern",
"pattern": "kpi-row",
"id": "summary",
"fields": [
"revenue",
"orders"
]
}
trend-and-breakdown
Required: id, date, measure, breakdown
Optional: title, dataset, aggregation
Field properties: date, measure, breakdown
{
"type": "pattern",
"pattern": "trend-and-breakdown",
"id": "performance",
"date": "month",
"measure": "completed",
"breakdown": "status"
}
record-explorer
Required: id, columns, details
Optional: title, dataset, pageSize
Field properties: columns
{
"type": "pattern",
"pattern": "record-explorer",
"id": "records",
"columns": [
"recordId",
"status"
],
"details": {
"titleField": "recordId",
"fields": [
"status"
]
}
}
map-and-details
Required: id
Optional: title, dataset, height, details
Field properties: —
{
"type": "pattern",
"pattern": "map-and-details",
"id": "locations",
"title": "Locations"
}
Universal interaction reference
{
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"value": "__value__",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
}
externalMode: "auto" resolves to filter for controls and selection for data-point/custom components. See interactions for lineage and field-origin restrictions.
UI actions
clearFilters, setTab, setState, toggleState, toggleSidebar, openOverlay, closeOverlay, toggleOverlay, setStep, nextStep, previousStep, showToast, dismissToast, scrollTo, and refresh (a safe no-op because Power BI owns refresh).
Layout
9 components
grid — Grid
Status: stable
Level: recommended
Recommended use: Responsive 12-column dashboard sections
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: flex, section
{
"type": "grid",
"id": "grid",
"title": "Responsive grid",
"span": 12,
"className": "hp-example-grid",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-grid { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 12,
"children": [
{
"type": "kpi",
"id": "kpi",
"title": "Total records",
"span": 4,
"className": "hp-example-kpi",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-kpi { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__field_key__",
"aggregation": "count",
"format": "integer",
"intent": "primary"
},
{
"type": "text",
"id": "supporting_text",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
]
}
flex — Flex row/column
Status: stable
Level: standard
Recommended use: Compact toolbars and flowing groups
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: grid, toolbar
{
"type": "flex",
"id": "flex",
"title": "Flexible content row",
"span": 12,
"className": "hp-example-flex",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-flex { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "row",
"columns": 12,
"gap": 10,
"children": [
{
"type": "select",
"id": "select",
"title": "Status",
"span": 4,
"className": "hp-example-select",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-select { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Status",
"placeholder": "Choose status",
"defaultValue": ""
},
{
"type": "searchBox",
"id": "searchBox",
"title": "Search",
"span": 4,
"className": "hp-example-searchBox",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-searchBox { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "contains",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Search",
"placeholder": "Choose search",
"defaultValue": ""
}
]
}
split — Split layout
Status: beta
Level: standard
Recommended use: Two coordinated content regions
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio, sizes, minSizes, maxSizes, resizable, persist, storageKey
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, maxSizes, minHeight, minSizes, order, persist, props, resizable, responsive, size, sizes, slots, span, storageKey, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: leftPanel, rightPanel
{
"type": "split",
"id": "split",
"title": "Split workspace",
"span": 12,
"className": "hp-example-split",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-split { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "row",
"columns": 12,
"gap": 12,
"children": [
{
"type": "section",
"id": "section",
"title": "Summary",
"span": 5,
"className": "hp-example-section",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-section { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "text",
"id": "supporting_text",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
]
},
{
"type": "section",
"id": "section_2",
"title": "Details",
"span": 7,
"className": "hp-example-section",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-section { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "text",
"id": "supporting_text_2",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
]
}
]
}
section — Section
Status: stable
Level: recommended
Recommended use: Named content grouping
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: card, collapsible
{
"type": "section",
"id": "section",
"title": "Operations section",
"span": 12,
"className": "hp-example-section",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-section { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "text",
"id": "section_content",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
],
"collapsible": true,
"defaultCollapsed": false
}
toolbar — Toolbar
Status: stable
Level: standard
Recommended use: Compact controls above content
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: flex
{
"type": "toolbar",
"id": "toolbar",
"title": "Dashboard toolbar",
"span": 12,
"className": "hp-example-toolbar",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-toolbar { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "row",
"columns": 12,
"gap": 6,
"children": [
{
"type": "select",
"id": "select",
"title": "Status",
"span": 4,
"className": "hp-example-select",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-select { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Status",
"placeholder": "Choose status",
"defaultValue": ""
},
{
"type": "button",
"id": "button",
"title": "Reset",
"span": 2,
"className": "hp-example-button",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-button { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"label": "Reset filters",
"uiAction": {
"type": "clearFilters"
}
}
]
}
leftPanel — Left panel
Status: beta
Level: standard
Recommended use: Persistent filter rail
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: rightPanel, offcanvas
{
"type": "leftPanel",
"id": "leftPanel",
"title": "Filter panel",
"span": 12,
"className": "hp-example-leftPanel",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-leftPanel { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "select",
"id": "select",
"title": "Category",
"span": 4,
"className": "hp-example-select",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-select { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Category",
"placeholder": "Choose category",
"defaultValue": ""
},
{
"type": "dateRange",
"id": "dateRange",
"title": "Date range",
"span": 4,
"className": "hp-example-dateRange",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-dateRange { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "between",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Date range",
"placeholder": "Choose date range",
"defaultValue": ""
}
],
"width": 280,
"collapsible": true,
"defaultCollapsed": false
}
rightPanel — Right panel
Status: beta
Level: standard
Recommended use: Persistent details rail
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: leftPanel, offcanvas
{
"type": "rightPanel",
"id": "rightPanel",
"title": "Detail panel",
"span": 12,
"className": "hp-example-rightPanel",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-rightPanel { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "detailPanel",
"id": "detailPanel",
"title": "Selected record",
"span": 12,
"className": "hp-example-detailPanel",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-detailPanel { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"selectedRow": true,
"emptyText": "Select a record",
"groups": [
{
"title": "Details",
"fields": [
"__field_key__"
]
}
]
}
],
"width": 340,
"collapsible": true,
"defaultCollapsed": false
}
spacer — Spacer
Status: beta
Level: advanced
Recommended use: Small intentional separation
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, height, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "spacer",
"id": "spacer",
"title": "Vertical spacing",
"span": 12,
"className": "hp-example-spacer",
"hidden": false,
"style": {
"height": 24,
"minHeight": 24
},
"css": ".hp-example-spacer { display: block; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
divider — Divider
Status: beta
Level: standard
Recommended use: Subtle visual separation
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "divider",
"id": "divider",
"title": "Section divider",
"span": 12,
"className": "hp-example-divider",
"hidden": false,
"style": {
"marginTop": 8,
"marginBottom": 8
},
"css": ".hp-example-divider { border-color: #d8dee8; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
Controls
12 components
searchBox — Search box
Status: stable
Level: recommended
Recommended use: Search all visible row values
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "searchBox",
"id": "searchBox",
"title": "Search records",
"span": 4,
"className": "hp-example-searchBox",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-searchBox { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "contains",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Search records",
"placeholder": "Search all records…",
"defaultValue": "",
"filter": {
"operator": "contains",
"value": ""
}
}
textInput — Text input
Status: beta
Level: standard
Recommended use: Text field filtering
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "textInput",
"id": "textInput",
"title": "Contains text",
"span": 4,
"className": "hp-example-textInput",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-textInput { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "contains",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Contains text",
"placeholder": "Enter text…",
"defaultValue": "",
"filter": {
"operator": "contains",
"value": ""
}
}
numberInput — Number input
Status: beta
Level: standard
Recommended use: Numeric thresholds
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "numberInput",
"id": "numberInput",
"title": "Minimum amount",
"span": 4,
"className": "hp-example-numberInput",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-numberInput { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Minimum amount",
"placeholder": "Choose minimum amount",
"defaultValue": 0,
"min": 0,
"max": 1000000,
"step": 100,
"filter": {
"operator": ">=",
"value": 0
}
}
slider — Slider
Status: beta
Level: standard
Recommended use: Bounded numeric filtering
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "slider",
"id": "slider",
"title": "Minimum score",
"span": 4,
"className": "hp-example-slider",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-slider { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Minimum score",
"placeholder": "Choose minimum score",
"defaultValue": 50,
"min": 0,
"max": 100,
"step": 5,
"filter": {
"operator": ">=",
"value": 50
}
}
select — Select
Status: stable
Level: recommended
Recommended use: Compact categorical filtering
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Uses native <select> element.
{
"type": "select",
"id": "select",
"title": "Status",
"span": 4,
"className": "hp-example-select",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-select { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Status",
"placeholder": "Choose status",
"defaultValue": "",
"options": [
{
"label": "Open",
"value": "Open"
},
{
"label": "Closed",
"value": "Closed"
}
],
"filter": {
"operator": "=",
"value": ""
}
}
multiSelect — Multi-select
Status: stable
Level: standard
Recommended use: Filtering by several categories
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "multiSelect",
"id": "multiSelect",
"title": "Statuses",
"span": 4,
"className": "hp-example-multiSelect",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-multiSelect { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "in",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Statuses",
"placeholder": "Choose statuses",
"defaultValue": [],
"multiple": true,
"options": [
{
"label": "Open",
"value": "Open"
},
{
"label": "Closed",
"value": "Closed"
}
],
"filter": {
"operator": "in",
"value": []
}
}
segmentedControl — Segmented control
Status: beta
Level: recommended
Recommended use: Two to seven high-frequency choices
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: buttonGroup
{
"type": "segmentedControl",
"id": "segmentedControl",
"title": "Priority",
"span": 4,
"className": "hp-example-segmentedControl",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-segmentedControl { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Priority",
"placeholder": "Choose priority",
"defaultValue": "",
"options": [
{
"label": "High",
"value": "High"
},
{
"label": "Medium",
"value": "Medium"
},
{
"label": "Low",
"value": "Low"
}
],
"filter": {
"operator": "=",
"value": ""
}
}
toggle — Toggle
Status: beta
Level: standard
Recommended use: Boolean state or view switch
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "toggle",
"id": "toggle",
"title": "Active records only",
"span": 4,
"className": "hp-example-toggle",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-toggle { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Active records only",
"placeholder": "Choose active records only",
"defaultValue": false,
"filter": {
"operator": "=",
"value": true
}
}
button — Button
Status: stable
Level: standard
Recommended use: Clear filters or open a view
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "button",
"id": "button",
"title": "Reset filters",
"span": 2,
"className": "hp-example-button",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-button { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "change",
"internalMode": "none",
"internalScope": "all",
"externalMode": "none",
"selectionMode": "replace",
"multiSelect": false,
"showSelector": false,
"clearOnSecondClick": false
},
"label": "Reset filters",
"uiAction": {
"type": "clearFilters"
}
}
buttonGroup — Button group
Status: beta
Level: standard
Recommended use: Small action groups
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "buttonGroup",
"id": "buttonGroup",
"title": "View options",
"span": 4,
"className": "hp-example-buttonGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-buttonGroup { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "change",
"internalMode": "none",
"internalScope": "self",
"externalMode": "none",
"selectionMode": "replace",
"multiSelect": false,
"showSelector": false,
"clearOnSecondClick": false
},
"label": "View",
"defaultValue": "summary",
"buttons": [
{
"id": "summary",
"label": "Summary",
"value": "summary",
"action": "setTab"
},
{
"id": "details",
"label": "Details",
"value": "details",
"action": "setTab"
}
]
}
filterChips — Filter chips
Status: beta
Level: recommended
Recommended use: Visible applied-filter summary
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "filterChips",
"id": "filterChips",
"title": "Applied filters",
"span": 12,
"className": "hp-example-filterChips",
"hidden": false,
"style": {
"display": "flex",
"gap": 6,
"minWidth": 0
},
"css": ".hp-example-filterChips { flex-wrap: wrap; }",
"interaction": {
"enabled": true,
"trigger": "change",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
}
}
dateRange — Date range
Status: beta
Level: standard
Recommended use: Start/end date filtering
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "dateRange",
"id": "dateRange",
"title": "Reporting period",
"span": 4,
"className": "hp-example-dateRange",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-dateRange { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "between",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Reporting period",
"placeholder": "Choose reporting period",
"defaultValue": [
"2026-01-01",
"2026-12-31"
],
"filter": {
"operator": "between",
"value": [
"2026-01-01",
"2026-12-31"
]
}
}
Navigation
4 components
tabs — Tabs
Status: stable
Level: recommended
Recommended use: Separate overview, map, and details
Required properties: type, id, tabs
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, tabs, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, tabs, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "tabs",
"id": "tabs",
"title": "Dashboard views",
"span": 12,
"className": "hp-example-tabs",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-tabs { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "click",
"internalMode": "none",
"internalScope": "self",
"externalMode": "none",
"selectionMode": "replace",
"multiSelect": false,
"showSelector": false,
"clearOnSecondClick": false
},
"tabs": [
{
"id": "overview",
"title": "Overview",
"children": [
{
"type": "text",
"id": "overview_content",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
]
},
{
"id": "details",
"title": "Details",
"children": [
{
"type": "table",
"id": "table",
"title": "Records",
"span": 12,
"className": "hp-example-table",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-table { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"columns": [
"__field_key__"
],
"pagination": true,
"pageSize": 25
}
]
}
]
}
collapsible — Collapsible section
Status: stable
Level: standard
Recommended use: Hide secondary content
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: accordion
{
"type": "collapsible",
"id": "collapsible",
"title": "Optional details",
"span": 12,
"className": "hp-example-collapsible",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-collapsible { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"direction": "column",
"columns": 12,
"gap": 8,
"children": [
{
"type": "text",
"id": "collapsible_content",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
],
"collapsible": true,
"defaultOpen": true
}
accordion — Accordion
Status: beta
Level: standard
Recommended use: Compact grouped filters
Required properties: type, id, items
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, multiple, defaultOpenItems, items, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, defaultOpenItems, disabled, heightMode, hidden, icon, id, interaction, interactions, items, minHeight, multiple, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Supports arrow-key navigation between headers. Enter/Space toggles. Proper aria-expanded.
Related: collapsible
{
"type": "accordion",
"id": "accordion",
"title": "Filter groups",
"multiple": true,
"defaultOpenItems": [
"filters"
],
"items": [
{
"id": "filters",
"title": "Filters",
"children": [
{
"type": "select",
"id": "accordion_status",
"title": "Status",
"field": "__field_key__",
"interaction": {
"enabled": true,
"trigger": "change",
"internalMode": "filter",
"externalMode": "auto"
}
}
]
}
],
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
steps — Steps
Status: beta
Level: standard
Recommended use: Sequential workflow progression
Required properties: type, id, items
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, orientation, activeStep, stateKey, clickable, items, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: activeStep, ariaLabel, aspectRatio, className, clickable, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, items, minHeight, order, orientation, props, responsive, size, slots, span, stateKey, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: tracking
{
"type": "steps",
"id": "steps",
"title": "Workflow progress",
"span": 12,
"className": "hp-example-steps",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-steps { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"orientation": "horizontal",
"activeStep": "review",
"stateKey": "workflow_steps",
"clickable": true,
"items": [
{
"id": "draft",
"label": "Draft",
"description": "Initial preparation"
},
{
"id": "review",
"label": "Review",
"description": "Quality check"
},
{
"id": "complete",
"label": "Complete",
"description": "Finalized"
}
]
}
Display
9 components
kpi — KPI card
Status: stable
Level: recommended
Recommended use: One decision-critical number
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "kpi",
"id": "kpi",
"title": "Total value",
"span": 3,
"className": "hp-example-kpi",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-kpi { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__field_key__",
"aggregation": "sum",
"format": "currency",
"intent": "primary"
}
metricGrid — Metric grid
Status: stable
Level: recommended
Recommended use: Three to six summary metrics
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "metricGrid",
"id": "metricGrid",
"title": "Executive metrics",
"span": 12,
"className": "hp-example-metricGrid",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-metricGrid { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"metrics": [
{
"title": "Records",
"aggregation": "count",
"format": "integer",
"intent": "primary",
"prefix": "",
"suffix": ""
},
{
"title": "Total value",
"field": "__measure_field_key__",
"aggregation": "sum",
"format": "currency",
"intent": "success",
"prefix": "$",
"suffix": ""
},
{
"title": "Open records",
"field": "__field_key__",
"aggregation": "countWhere",
"where": {
"field": "__category_field_key__",
"equals": "Open"
},
"format": "integer",
"intent": "warning",
"metric": "open_records"
}
]
}
infoCard — Info card
Status: beta
Level: standard
Recommended use: Short explanatory or record content
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "infoCard",
"id": "infoCard",
"title": "Record summary",
"span": 4,
"className": "hp-example-infoCard",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-infoCard { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__field_key__",
"aggregation": "first",
"format": "",
"intent": "neutral",
"text": "Context and guidance for this dashboard.",
"value": "Optional static fallback"
}
statusBadge — Status badge
Status: stable
Level: standard
Recommended use: Compact status labeling
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "statusBadge",
"id": "statusBadge",
"title": "Current status",
"span": 3,
"className": "hp-example-statusBadge",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-statusBadge { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__field_key__",
"aggregation": "first",
"format": "",
"intent": "success",
"value": "Active"
}
progressBar — Progress bar
Status: stable
Level: standard
Recommended use: Progress toward a target
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "progressBar",
"id": "progressBar",
"title": "Completion",
"span": 4,
"className": "hp-example-progressBar",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-progressBar { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__measure_field_key__",
"aggregation": "first",
"format": "percent",
"intent": "primary",
"value": 72,
"max": 100
}
alert — Alert
Status: stable
Level: standard
Recommended use: Actionable exception banner
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "alert",
"id": "alert",
"title": "Attention required",
"span": 12,
"className": "hp-example-alert",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-alert { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__field_key__",
"aggregation": "count",
"format": "integer",
"intent": "warning",
"text": "Some records require review.",
"value": "Review"
}
statList — Stat list
Status: beta
Level: standard
Recommended use: Compact label/value summary
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "statList",
"id": "statList",
"title": "Record statistics",
"span": 4,
"className": "hp-example-statList",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-statList { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"items": [
{
"label": "Owner",
"field": "__field_key__",
"format": ""
},
{
"label": "Amount",
"field": "__measure_field_key__",
"format": "currency"
},
{
"label": "Target",
"value": 100,
"format": "integer"
}
]
}
detailPanel — Detail panel
Status: stable
Level: recommended
Recommended use: Selected-row fields, groups, badges, and copyable values
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, format, intent, metrics, value, text, items, max, selectedRow, groups, emptyText, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, emptyText, field, format, groups, heightMode, hidden, icon, id, intent, interaction, interactions, items, max, metrics, minHeight, order, props, responsive, selectedRow, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "detailPanel",
"id": "detailPanel",
"title": "Selected record",
"span": 5,
"className": "hp-example-detailPanel",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-detailPanel { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"selectedRow": true,
"emptyText": "Select a table row, chart point, map feature, or timeline event.",
"groups": [
{
"title": "Overview",
"fields": [
{
"field": "__field_key__",
"label": "Record",
"badge": true,
"copyable": true,
"format": ""
},
{
"field": "__category_field_key__",
"label": "Category"
}
]
},
{
"title": "Measures",
"fields": [
{
"field": "__measure_field_key__",
"label": "Amount",
"format": "currency",
"copyable": true
}
]
}
],
"items": [
{
"label": "Record",
"field": "__field_key__"
},
{
"label": "Amount",
"field": "__measure_field_key__",
"format": "currency"
}
]
}
timeline — Timeline / activity feed
Status: beta
Level: recommended
Recommended use: Operational history and status events
Required properties: type, id, dateField, titleField
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, dateField, titleField, categoryField, statusField, descriptionField, sortDirection, limit, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, categoryField, className, css, data, dataset, dateField, descriptionField, disabled, heightMode, hidden, icon, id, interaction, interactions, limit, minHeight, order, props, responsive, size, slots, sortDirection, span, statusField, style, subtitle, title, titleField, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "timeline",
"id": "timeline",
"title": "Activity timeline",
"span": 6,
"className": "hp-example-timeline",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-timeline { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"dateField": "__date_field_key__",
"titleField": "__field_key__",
"categoryField": "__category_field_key__",
"statusField": "__status_field_key__",
"descriptionField": "__description_field_key__",
"sortDirection": "desc",
"limit": 50
}
Primitives
13 components
card — Card
Status: stable
Level: recommended
Recommended use: Professional content container with header
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, padding, header, actions, footer, status, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: actions, ariaLabel, aspectRatio, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, footer, gap, header, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, padding, props, responsive, size, slots, span, status, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: section, collapsible
{
"type": "card",
"id": "card",
"title": "Analysis card",
"span": 6,
"className": "hp-example-card",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-card { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"header": {
"title": "Performance",
"subtitle": "Current period",
"icon": "chart"
},
"padding": "compact",
"status": {
"intent": "primary",
"position": "top"
},
"children": [
{
"type": "text",
"id": "card_content",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
],
"footer": [
{
"type": "text",
"id": "text",
"title": "Footer note",
"span": 12,
"className": "hp-example-text",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-text { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"text": "Updated from Power BI"
}
]
}
icon — Icon
Status: stable
Level: standard
Recommended use: Safe SVG icon from bundled registry
Required properties: type, id, icon
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Accessibility: Use ariaLabel when the icon is the only visible content.
{
"type": "icon",
"id": "icon",
"title": "Information icon",
"span": 1,
"className": "hp-example-icon",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-icon { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"icon": "info",
"size": "md",
"ariaLabel": "Information"
}
iconButton — Icon button
Status: stable
Level: standard
Recommended use: Compact accessible icon action
Required properties: type, id, icon, ariaLabel
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: ariaLabel is required. Tooltips provide additional context.
{
"type": "iconButton",
"id": "iconButton",
"title": "Refresh dashboard",
"span": 1,
"className": "hp-example-iconButton",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-iconButton { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"icon": "refresh",
"ariaLabel": "Refresh data",
"variant": "ghost",
"size": "sm",
"uiAction": {
"type": "showToast",
"message": "Dashboard refreshed",
"intent": "primary",
"durationMs": 3000
}
}
avatar — Avatar
Status: beta
Level: standard
Recommended use: Identity indicator with initials
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, initials, label, shape, status, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, initials, interaction, interactions, label, minHeight, order, props, responsive, shape, size, slots, span, status, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "avatar",
"id": "avatar",
"title": "User avatar",
"span": 1,
"className": "hp-example-avatar",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-avatar { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"initials": "JD",
"label": "Jane Doe",
"size": "md",
"shape": "circle",
"status": "online"
}
avatarGroup — Avatar group
Status: beta
Level: standard
Recommended use: Stacked identity indicators
Required properties: type, id, avatars
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, avatars, max, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, avatars, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, max, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "avatarGroup",
"id": "avatarGroup",
"title": "Team members",
"span": 3,
"className": "hp-example-avatarGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-avatarGroup { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"avatars": [
{
"type": "avatar",
"id": "avatar",
"title": "Member 1",
"span": 12,
"className": "hp-example-avatar",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-avatar { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"initials": "JD",
"size": "sm",
"shape": "circle"
},
{
"type": "avatar",
"id": "avatar_2",
"title": "Member 2",
"span": 12,
"className": "hp-example-avatar",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-avatar { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"initials": "AK",
"size": "sm",
"shape": "circle"
}
],
"max": 5
}
listGroup — List group
Status: stable
Level: recommended
Recommended use: Compact row list with badges and actions
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, items, source, primaryField, secondaryField, badgeField, valueField, maxItems, compact, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, badgeField, className, compact, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, items, maxItems, minHeight, order, primaryField, props, responsive, secondaryField, size, slots, source, span, style, subtitle, title, tooltip, type, uiAction, valueField, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: dataGrid
{
"type": "listGroup",
"id": "listGroup",
"title": "Recent items",
"span": 12,
"className": "hp-example-listGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-listGroup { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"source": "rows",
"primaryField": "__field_key__",
"secondaryField": "__category_field_key__",
"badgeField": "__status_field_key__",
"maxItems": 10,
"compact": false
}
dataGrid — Data grid
Status: stable
Level: recommended
Recommended use: Record detail label/value layout
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, items, source, columns, selectedRow, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, columns, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, items, minHeight, order, props, responsive, selectedRow, size, slots, source, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: listGroup, detailPanel
{
"type": "dataGrid",
"id": "dataGrid",
"title": "Record details",
"span": 12,
"className": "hp-example-dataGrid",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-dataGrid { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"selectedRow": true,
"columns": 2,
"items": [
{
"label": "Record",
"field": "__field_key__",
"copyable": true
},
{
"label": "Status",
"field": "__category_field_key__",
"badge": true
},
{
"label": "Value",
"field": "__measure_field_key__",
"format": "currency"
}
]
}
countUp — Count-up
Status: beta
Level: standard
Recommended use: Animated number with prefix/suffix
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, aggregation, value, prefix, suffix, duration, format, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: aggregation, ariaLabel, aspectRatio, className, css, data, dataset, disabled, duration, field, format, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, prefix, props, responsive, size, slots, span, style, subtitle, suffix, title, tooltip, type, uiAction, value, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Accessibility: Respects prefers-reduced-motion. Animation disabled under reduced motion.
{
"type": "countUp",
"id": "countUp",
"title": "Total value",
"span": 3,
"className": "hp-example-countUp",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-countUp { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"field": "__measure_field_key__",
"aggregation": "sum",
"prefix": "$",
"suffix": "",
"duration": 2000,
"format": "currency"
}
tracking — Tracking
Status: beta
Level: standard
Recommended use: Compact stage progress display
Required properties: type, id, stages
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, stages, activeStage, stageField, orientation, compact, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: activeStage, ariaLabel, aspectRatio, className, compact, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, orientation, props, responsive, size, slots, span, stageField, stages, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Related: steps
{
"type": "tracking",
"id": "tracking",
"title": "Approval progress",
"span": 12,
"className": "hp-example-tracking",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-tracking { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"stages": [
{
"id": "submitted",
"label": "Submitted",
"state": "complete"
},
{
"id": "review",
"label": "In Review",
"state": "current"
},
{
"id": "approved",
"label": "Approved",
"state": "upcoming"
}
],
"activeStage": "review",
"orientation": "horizontal",
"compact": false
}
dropdown — Dropdown
Status: beta
Level: recommended
Recommended use: Compact action menu
Required properties: type, id, items
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, trigger, items, placement, closeOnSelect, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, closeOnSelect, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, items, minHeight, order, placement, props, responsive, size, slots, span, style, subtitle, title, tooltip, trigger, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Menu roles, roving arrow-key focus, Home/End, nested-menu keys, Escape/Tab dismissal, and trigger focus restoration are supported.
{
"type": "dropdown",
"id": "dropdown",
"title": "Row actions",
"span": 12,
"className": "hp-example-dropdown",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-dropdown { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"trigger": {
"label": "Actions",
"icon": "dots",
"variant": "ghost"
},
"items": [
{
"id": "view",
"label": "View details",
"icon": "eye",
"action": {
"type": "openOverlay",
"target": "detail_modal"
}
},
{
"id": "divider",
"divider": true
},
{
"id": "delete",
"label": "Remove",
"icon": "trash",
"disabled": true
}
],
"placement": "bottom-end",
"closeOnSelect": true
}
modal — Modal
Status: beta
Level: recommended
Recommended use: Focused overlay with children
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, backdropClose, footer, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, backdropClose, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, footer, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Initial focus, focus trap, Escape close, labelled dialog semantics, and trigger focus restoration are supported.
{
"type": "modal",
"id": "modal",
"title": "Record Details",
"span": 12,
"className": "hp-example-modal",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-modal { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"size": "md",
"backdropClose": true,
"children": [
{
"type": "dataGrid",
"id": "dataGrid",
"title": "Details",
"span": 12,
"className": "hp-example-dataGrid",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-dataGrid { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"items": [
{
"label": "Record",
"field": "__field_key__"
},
{
"label": "Value",
"field": "__measure_field_key__",
"format": "currency"
}
]
}
],
"footer": [
{
"type": "button",
"id": "button",
"title": "Close",
"span": 12,
"className": "hp-example-button",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-button { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"label": "Close",
"uiAction": {
"type": "closeOverlay",
"target": "detail_modal"
}
}
]
}
offcanvas — Offcanvas
Status: beta
Level: recommended
Recommended use: Slide-over panel for details/filters
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, position, openWhen, stateKey, backdrop, backdropClose, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, backdrop, backdropClose, children, className, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, openWhen, order, position, props, responsive, size, slots, span, stateKey, style, subtitle, title, tooltip, type, uiAction, variant, visibility, width
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Uses dialog semantics, managed focus, Escape/backdrop close, an accessible close button, and internal scrolling.
Related: modal
{
"type": "offcanvas",
"id": "offcanvas",
"title": "Filters",
"span": 12,
"className": "hp-example-offcanvas",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-offcanvas { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"position": "left",
"width": 320,
"openWhen": "state",
"stateKey": "filter_offcanvas",
"children": [
{
"type": "select",
"id": "select",
"title": "Category",
"span": 4,
"className": "hp-example-select",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-select { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Category",
"placeholder": "Choose category",
"defaultValue": ""
}
]
}
popover — Popover
Status: beta
Level: standard
Recommended use: Rich tooltip with actions
Required properties: type, id, trigger, children
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, children, direction, columns, gap, width, collapsible, defaultCollapsed, defaultOpen, trigger, placement, closeOnOutsideClick, closeOnEscape, showArrow, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, children, className, closeOnEscape, closeOnOutsideClick, collapsible, columns, css, data, dataset, defaultCollapsed, defaultOpen, direction, disabled, gap, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, placement, props, responsive, showArrow, size, slots, span, style, subtitle, title, tooltip, trigger, type, uiAction, variant, visibility, width
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Uses role=dialog, managed focus, Escape/outside dismissal, ARIA trigger relationships, and focus restoration.
{
"type": "popover",
"id": "popover",
"title": "Help popover",
"span": 1,
"className": "hp-example-popover",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-popover { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"trigger": {
"label": "?",
"icon": "info"
},
"children": [
{
"type": "text",
"id": "popover_content",
"span": 12,
"text": "Supporting content",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
}
}
]
}
Feedback
3 components
emptyState — Empty state
Status: stable
Level: recommended
Recommended use: Placeholder when no data is available
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, description, primaryAction, secondaryAction, compact, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, compact, css, data, dataset, description, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, primaryAction, props, responsive, secondaryAction, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "emptyState",
"id": "emptyState",
"title": "No data available",
"span": 12,
"className": "hp-example-emptyState",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-emptyState { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"icon": "info",
"description": "No records match the current filters.",
"primaryAction": {
"type": "clearFilters"
},
"compact": false
}
placeholder — Placeholder
Status: stable
Level: standard
Recommended use: Skeleton loading indicator
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, lines, placeholderVariant, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, lines, minHeight, order, placeholderVariant, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Accessibility: Uses aria-hidden. Respects prefers-reduced-motion.
{
"type": "placeholder",
"id": "placeholder",
"title": "Loading content",
"span": 12,
"className": "hp-example-placeholder",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-placeholder { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"lines": 4,
"placeholderVariant": "text"
}
spinner — Spinner
Status: stable
Level: standard
Recommended use: Inline or centered loading indicator
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, label, inline, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, inline, interaction, interactions, label, minHeight, order, props, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
Accessibility: Uses role=status with accessible label.
{
"type": "spinner",
"id": "spinner",
"title": "Loading data",
"span": 12,
"className": "hp-example-spinner",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-spinner { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"label": "Loading records...",
"inline": false
}
Forms
5 components
textarea — Text area
Status: beta
Level: standard
Recommended use: Multi-line text input
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Associated label via generated ID.
{
"type": "textarea",
"id": "textarea",
"title": "Notes",
"span": 4,
"className": "hp-example-textarea",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-textarea { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Notes",
"placeholder": "Enter notes...",
"defaultValue": "",
"rows": 4,
"maxLength": 500
}
checkbox — Checkbox
Status: beta
Level: standard
Recommended use: Single boolean toggle
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "checkbox",
"id": "checkbox",
"title": "Include inactive",
"span": 12,
"className": "hp-example-checkbox",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-checkbox { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Include inactive records",
"defaultValue": false
}
checkboxGroup — Checkbox group
Status: beta
Level: standard
Recommended use: Multiple choice selection
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "checkboxGroup",
"id": "checkboxGroup",
"title": "Categories",
"span": 12,
"className": "hp-example-checkboxGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-checkboxGroup { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "in",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__category_field_key__",
"label": "Select categories",
"options": [
{
"label": "Category A",
"value": "A"
},
{
"label": "Category B",
"value": "B"
}
],
"multiple": true,
"defaultValue": []
}
radioGroup — Radio group
Status: beta
Level: standard
Recommended use: Single choice from options
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "radioGroup",
"id": "radioGroup",
"title": "Priority",
"span": 12,
"className": "hp-example-radioGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-radioGroup { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"label": "Priority level",
"options": [
{
"label": "High",
"value": "High"
},
{
"label": "Medium",
"value": "Medium"
},
{
"label": "Low",
"value": "Low"
}
],
"defaultValue": "Medium"
}
inputGroup — Input group
Status: beta
Level: standard
Recommended use: Input with safe prefix/suffix
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, field, label, placeholder, min, max, step, multiple, defaultValue, options, targets, filter, buttons, description, helpText, errorText, required, orientation, rows, maxLength, prefixText, prefixIcon, suffixText, suffixIcon, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, buttons, className, css, data, dataset, defaultValue, description, disabled, errorText, field, filter, heightMode, helpText, hidden, icon, id, interaction, interactions, label, max, maxLength, min, minHeight, multiple, options, order, orientation, placeholder, prefixIcon, prefixText, props, required, responsive, rows, size, slots, span, step, style, subtitle, suffixIcon, suffixText, targets, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "inputGroup",
"id": "inputGroup",
"title": "Search with icon",
"span": 12,
"className": "hp-example-inputGroup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-inputGroup { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "filter",
"internalScope": "all",
"externalMode": "auto",
"field": "__field_key__",
"operator": "contains",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": false
},
"field": "__field_key__",
"placeholder": "Search...",
"prefixIcon": "search",
"suffixText": "items"
}
Charts
16 components
barChart — Bar chart
Status: stable
Level: recommended
Recommended use: Ranked category comparison
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "barChart",
"id": "barChart",
"title": "Value by category",
"span": 6,
"className": "hp-example-barChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-barChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"xAxis": {
"axisLabel": {
"rotate": 0,
"hideOverlap": true
}
},
"series": [
{
"type": "bar",
"barMaxWidth": 42,
"label": {
"show": false
}
}
]
}
}
horizontalBarChart — Horizontal bar
Status: stable
Level: recommended
Recommended use: Long category labels
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "horizontalBarChart",
"id": "horizontalBarChart",
"title": "Ranked categories",
"span": 6,
"className": "hp-example-horizontalBarChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-horizontalBarChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"yAxis": {
"axisLabel": {
"width": 120,
"overflow": "truncate"
}
},
"series": [
{
"type": "bar",
"barMaxWidth": 32,
"label": {
"show": true,
"position": "right"
}
}
]
}
}
lineChart — Line chart
Status: stable
Level: recommended
Recommended use: Time or ordered trends
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "lineChart",
"id": "lineChart",
"title": "Trend over time",
"span": 6,
"className": "hp-example-lineChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-lineChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"series": [
{
"type": "line",
"smooth": true,
"showSymbol": false,
"connectNulls": true
}
]
}
}
areaChart — Area chart
Status: stable
Level: standard
Recommended use: Trend plus magnitude
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "areaChart",
"id": "areaChart",
"title": "Volume trend",
"span": 6,
"className": "hp-example-areaChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-areaChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"series": [
{
"type": "line",
"smooth": true,
"areaStyle": {
"opacity": 0.24
},
"showSymbol": false
}
]
}
}
pieChart — Pie chart
Status: beta
Level: standard
Recommended use: Few-part composition only
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "pieChart",
"id": "pieChart",
"title": "Category share",
"span": 6,
"className": "hp-example-pieChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-pieChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "item",
"formatter": "{b}: {c} ({d}%)"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"series": [
{
"type": "pie",
"radius": "72%",
"label": {
"show": true,
"formatter": "{b}: {d}%"
}
}
]
}
}
donutChart — Donut chart
Status: beta
Level: standard
Recommended use: Few-part composition with central space
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "donutChart",
"id": "donutChart",
"title": "Category distribution",
"span": 6,
"className": "hp-example-donutChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-donutChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "item",
"formatter": "{b}: {c} ({d}%)"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"series": [
{
"type": "pie",
"radius": [
"46%",
"72%"
],
"avoidLabelOverlap": true
}
]
}
}
scatterChart — Scatter chart
Status: beta
Level: standard
Recommended use: Relationship between two measures
Required properties: type, id, x, y
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "scatterChart",
"id": "scatterChart",
"title": "Measure relationship",
"span": 6,
"className": "hp-example-scatterChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-scatterChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"x": "__x_measure_field_key__",
"y": "__y_measure_field_key__",
"pointSize": "__size_measure_field_key__",
"height": 340,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false
},
"options": {
"tooltip": {
"trigger": "item"
},
"xAxis": {
"name": "X measure",
"scale": true
},
"yAxis": {
"name": "Y measure",
"scale": true
},
"series": [
{
"type": "scatter",
"emphasis": {
"focus": "series"
}
}
]
}
}
gauge — Gauge
Status: beta
Level: standard
Recommended use: Single target attainment
Required properties: type, id, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "gauge",
"id": "gauge",
"title": "Target attainment",
"span": 4,
"className": "hp-example-gauge",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-gauge { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"measure": "__measure_field_key__",
"aggregation": "avg",
"height": 300,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false
},
"options": {
"series": [
{
"type": "gauge",
"min": 0,
"max": 100,
"progress": {
"show": true,
"width": 14
},
"axisLine": {
"lineStyle": {
"width": 14
}
},
"detail": {
"formatter": "{value}%"
}
}
]
}
}
heatmap — Heatmap
Status: beta
Level: standard
Recommended use: Dense intensity comparison
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "heatmap",
"id": "heatmap",
"title": "Category intensity",
"span": 6,
"className": "hp-example-heatmap",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-heatmap { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 320,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
},
"visualMap": {
"min": 0,
"max": 100,
"calculable": true,
"orient": "horizontal",
"bottom": 0
},
"series": [
{
"type": "heatmap",
"label": {
"show": true
},
"emphasis": {
"itemStyle": {
"shadowBlur": 8
}
}
}
]
}
}
comboChart — Combo chart
Status: beta
Level: recommended
Recommended use: Compare bar and line measures on shared categories
Required properties: type, id, category, series
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, series, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, series, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Each series/category point maps back to its source rows.
Related: barChart, lineChart
{
"type": "comboChart",
"id": "comboChart",
"title": "Actual vs. target",
"span": 8,
"className": "hp-example-comboChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-comboChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"series": [
{
"field": "__measure_field_key__",
"label": "Actual",
"chartType": "bar",
"aggregation": "sum",
"axis": "left"
},
{
"field": "__target_measure_field_key__",
"label": "Target",
"chartType": "line",
"aggregation": "sum",
"axis": "left"
},
{
"field": "__rate_measure_field_key__",
"label": "Completion",
"chartType": "line",
"aggregation": "avg",
"axis": "right",
"format": "percent"
}
],
"height": 340,
"options": {
"legend": {
"top": 0
},
"animation": true
}
}
waterfallChart — Waterfall chart
Status: beta
Level: recommended
Recommended use: Explain positive and negative contributions to a total
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, showStart, showEnd, positiveIntent, negativeIntent, totalIntent, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, negativeIntent, options, order, pointSize, positiveIntent, props, responsive, setOption, showEnd, showStart, size, slots, span, style, subtitle, title, tooltip, totalIntent, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "waterfallChart",
"id": "waterfallChart",
"title": "Budget variance",
"span": 6,
"className": "hp-example-waterfallChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-waterfallChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"showStart": true,
"showEnd": true,
"positiveIntent": "success",
"negativeIntent": "danger",
"totalIntent": "primary",
"height": 320
}
sankeyChart — Sankey chart
Status: beta
Level: standard
Recommended use: Show weighted flow between stages
Required properties: type, id, sourceField, targetField
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, sourceField, targetField, valueField, orientation, nodeAlign, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, nodeAlign, options, order, orientation, pointSize, props, responsive, setOption, size, slots, sourceField, span, style, subtitle, targetField, title, tooltip, type, uiAction, valueField, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Node and edge clicks retain distinct row bindings; accompany dense flows with a table when exact values matter.
{
"type": "sankeyChart",
"id": "sankeyChart",
"title": "Work order flow",
"span": 8,
"className": "hp-example-sankeyChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-sankeyChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"sourceField": "__source_field_key__",
"targetField": "__target_field_key__",
"valueField": "__measure_field_key__",
"aggregation": "sum",
"orientation": "horizontal",
"nodeAlign": "justify",
"height": 380
}
treemapChart — Treemap chart
Status: beta
Level: standard
Recommended use: Explore hierarchical contribution
Required properties: type, id, pathFields, valueField
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, pathFields, valueField, labelField, maxDepth, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, labelField, maxDataRows, maxDepth, measure, minHeight, options, order, pathFields, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, valueField, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Every hierarchy node maps to the contributing source rows.
{
"type": "treemapChart",
"id": "treemapChart",
"title": "Cost hierarchy",
"span": 8,
"className": "hp-example-treemapChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-treemapChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"pathFields": [
"__department_field_key__",
"__program_field_key__",
"__project_field_key__"
],
"valueField": "__measure_field_key__",
"aggregation": "sum",
"labelField": "__project_field_key__",
"maxDepth": 3,
"height": 380
}
funnelChart — Funnel chart
Status: beta
Level: standard
Recommended use: Compare ordered process stages
Required properties: type, id, category, measure
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, sort, gap, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, gap, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, sort, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Labels include stage values and percentages.
{
"type": "funnelChart",
"id": "funnelChart",
"title": "Project pipeline",
"span": 6,
"className": "hp-example-funnelChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-funnelChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"sort": "descending",
"gap": 3,
"height": 340
}
radarChart — Radar chart
Status: beta
Level: advanced
Recommended use: Compare multivariate profiles
Required properties: type, id, indicators
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, groupField, indicators, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, groupField, height, heightMode, hidden, icon, id, indicators, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "radarChart",
"id": "radarChart",
"title": "Team performance",
"span": 6,
"className": "hp-example-radarChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-radarChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"groupField": "__category_field_key__",
"indicators": [
{
"field": "__safety_measure_field_key__",
"label": "Safety",
"max": 100
},
{
"field": "__quality_measure_field_key__",
"label": "Quality",
"max": 100
},
{
"field": "__schedule_measure_field_key__",
"label": "Schedule",
"max": 100
}
],
"height": 360
}
smallMultiples — Small multiples
Status: beta
Level: recommended
Recommended use: Repeat one comparison across a split field
Required properties: type, id, splitField, chart
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, splitField, chart, maxPanels, sharedScale, height, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, chart, className, css, data, dataset, disabled, height, heightMode, hidden, icon, id, interaction, interactions, maxPanels, minHeight, order, props, responsive, sharedScale, size, slots, span, splitField, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
{
"type": "smallMultiples",
"id": "smallMultiples",
"title": "Regional comparisons",
"span": 12,
"className": "hp-example-smallMultiples",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-smallMultiples { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"splitField": "__split_field_key__",
"maxPanels": 6,
"sharedScale": true,
"height": 200,
"chart": {
"type": "barChart",
"id": "small_multiple_chart",
"title": "Value by category",
"span": 12,
"className": "hp-example-barChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-barChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"aggregation": "sum",
"height": 200,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"useDirtyRect": false
},
"setOption": {
"notMerge": true,
"lazyUpdate": false,
"silent": false
},
"options": {
"animation": true,
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"show": true,
"bottom": 0
},
"grid": {
"left": 48,
"right": 20,
"top": 32,
"bottom": 52,
"containLabel": true
}
}
}
}
Tables
2 components
table — Detail table
Status: stable
Level: recommended
Recommended use: Row-level investigation and export-ready detail
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, columns, pagination, pageSize, search, resizableColumns, maxRows, stickyHeader, density, striped, hover, showRowCount, pageSizeOptions, rowActions, emptyState, order, responsive, heightMode, minHeight, aspectRatio, export, virtualization
All allowed properties: ariaLabel, aspectRatio, className, columns, css, data, dataset, density, disabled, emptyState, export, heightMode, hidden, hover, icon, id, interaction, interactions, maxRows, minHeight, order, pageSize, pageSizeOptions, pagination, props, resizableColumns, responsive, rowActions, search, showRowCount, size, slots, span, stickyHeader, striped, style, subtitle, title, tooltip, type, uiAction, variant, virtualization, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Row actions use safe UiAction. Column resizing prevents row selection while active.
Related: matrix
{
"type": "table",
"id": "table",
"title": "Record details",
"span": 12,
"className": "hp-example-table",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-table { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": true,
"clearOnSecondClick": true
},
"columns": [
{
"field": "__field_key__",
"title": "Record",
"width": 180,
"format": "",
"hozAlign": "left",
"conditional": [
{
"operator": "=",
"value": "Critical",
"color": "#991b1b",
"background": "#fee2e2"
}
]
},
{
"field": "__measure_field_key__",
"title": "Amount",
"width": 120,
"format": "currency",
"hozAlign": "right",
"conditional": [
{
"operator": ">=",
"value": 1000,
"color": "#166534",
"background": "#dcfce7"
}
]
}
],
"pagination": true,
"pageSize": 25,
"search": true,
"resizableColumns": true,
"maxRows": 1000,
"stickyHeader": true
}
matrix — Matrix / pivot
Status: stable
Level: recommended
Recommended use: Summarized row-by-column comparison
Required properties: type, id, rows, values
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, rows, columns, values, showTotals, heatmap, maxRows, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, columns, css, data, dataset, disabled, heatmap, heightMode, hidden, icon, id, interaction, interactions, maxRows, minHeight, order, props, responsive, rows, showTotals, size, slots, span, style, subtitle, title, tooltip, type, uiAction, values, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: table
{
"type": "matrix",
"id": "matrix",
"title": "Category matrix",
"span": 12,
"className": "hp-example-matrix",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-matrix { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"rows": [
"__category_field_key__",
"__field_key__"
],
"columns": [
"__column_field_key__"
],
"values": [
{
"field": "__measure_field_key__",
"title": "Total amount",
"aggregation": "sum",
"format": "currency"
},
{
"title": "Records",
"aggregation": "count",
"format": "integer"
}
],
"showTotals": true,
"heatmap": true,
"maxRows": 200
}
Maps
2 components
map — Map
Status: beta
Level: recommended
Recommended use: Values-only Power BI fields need independent layer datasets/bindings or practical public ArcGIS REST layers authored in Map Studio
Required properties: type, id, layers
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, engine, view, basemap, layers, layerGroups, bookmarks, search, legend, quickFilters, featureDetails, layerPanel, toolbar, tools, height, heightMode, minHeight, aspectRatio, order, responsive
All allowed properties: ariaLabel, aspectRatio, basemap, bookmarks, className, css, data, dataset, disabled, engine, featureDetails, height, heightMode, hidden, icon, id, interaction, interactions, layerGroups, layerPanel, layers, legend, minHeight, order, props, quickFilters, responsive, search, size, slots, span, style, subtitle, title, toolbar, tools, tooltip, type, uiAction, variant, view, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Related: offcanvas, dataGrid
{
"type": "map",
"id": "map",
"title": "Locations",
"span": 12,
"className": "hp-example-map",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-map { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"height": 420,
"view": {
"center": [
29.75,
-95.35
],
"zoom": 10,
"fitMode": "data"
},
"basemap": {
"type": "none"
},
"search": {
"enabled": true,
"placeholder": "Search for a place or address",
"zoom": 16,
"showResultMarker": true,
"clearMarkerOnClose": false
},
"legend": {
"defaultOpen": false
},
"layerGroups": [
{
"id": "operations",
"name": "Operations",
"visible": true,
"order": 0
}
],
"bookmarks": [
{
"id": "home_view",
"label": "Home view",
"center": [
29.75,
-95.35
],
"zoom": 10
}
],
"layers": [
{
"id": "powerbi_locations",
"name": "Locations",
"dataset": "powerbi",
"groupId": "operations",
"source": {
"type": "powerbi",
"bindings": {
"latitude": "__latitude_field_key__",
"longitude": "__longitude_field_key__"
}
},
"renderer": {
"type": "simple",
"symbol": {
"shape": "circle",
"fillColor": "#2563eb",
"outlineColor": "#1d4ed8",
"size": 7
}
},
"popup": {
"enabled": true,
"title": "{{__field_key__}}",
"fields": [
{
"field": "__field_key__",
"fieldSource": "powerbi",
"label": "Location"
}
]
},
"tooltip": {
"enabled": true,
"fields": [
{
"field": "__field_key__",
"fieldSource": "powerbi",
"label": "Location"
}
]
},
"interaction": {
"enabled": true,
"trigger": "click",
"internalMode": "highlight",
"externalMode": "selection",
"selectionMode": "replace",
"multiSelect": true
}
}
],
"layerPanel": {
"visible": true,
"defaultOpen": false,
"allowViewerReorder": true,
"allowViewerOpacity": true,
"allowViewerLabels": true
},
"toolbar": {
"visible": true,
"home": true,
"layers": true,
"legend": true,
"search": true,
"clearSelection": true,
"zoomToSelection": true,
"bookmarks": true
}
}
geolibre — GeoLibre workspace
Status: beta
Level: advanced
Recommended use: A report needs GeoLibre's authentic project-based GIS workspace, layer management, GIS styling, or advanced browser-safe geospatial formats
Required properties: type, id
Key properties: dataset, title, subtitle, span, order, responsive, heightMode, minHeight, aspectRatio, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, project, powerBi, runtime, capabilityProfile
All allowed properties: ariaLabel, aspectRatio, capabilityProfile, className, css, data, dataset, disabled, height, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, powerBi, project, props, responsive, runtime, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: Give the workspace an ariaLabel and provide an adjacent table or summary for keyboard-first access to selected Power BI records.
Related: map, table
{
"type": "geolibre",
"id": "gis_workspace",
"title": "GIS workspace",
"span": 12,
"heightMode": "fixed",
"height": 520,
"capabilityProfile": "powerbi-embedded",
"runtime": {
"channel": "managed",
"panels": "open",
"theme": "system"
},
"powerBi": {
"layers": [
{
"id": "locations",
"title": "Power BI locations",
"geometry": {
"latitudeField": "__latitude_field__",
"longitudeField": "__longitude_field__"
}
}
],
"selection": {
"enabled": true,
"externalHighlight": true,
"maxSelectionCount": 1000
}
},
"interaction": {
"enabled": true,
"trigger": "click",
"internalMode": "highlight",
"internalScope": "all",
"externalMode": "selection",
"selectionMode": "replace",
"multiSelect": true
}
}
Custom components
5 components
text — Text
Status: stable
Level: standard
Recommended use: Safe plain text
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, text, repeat, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, repeat, responsive, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "text",
"id": "text",
"title": "Text content",
"span": 12,
"className": "hp-example-text",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-text { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"text": "Plain text content for the dashboard."
}
markdown — Markdown
Status: stable
Level: standard
Recommended use: Structured explanatory content
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, text, repeat, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, icon, id, interaction, interactions, minHeight, order, props, repeat, responsive, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML No.
Data interaction: No. UI action: Yes.
{
"type": "markdown",
"id": "markdown",
"title": "Markdown content",
"span": 12,
"className": "hp-example-markdown",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-markdown { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"text": "## Dashboard notes\n\n- Current period\n- Key operational context\n\n**Field:** {{__field_key__}}"
}
html — Sanitized HTML
Status: beta
Level: advanced
Recommended use: Branded static content
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, html, repeat, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, html, icon, id, interaction, interactions, minHeight, order, props, repeat, responsive, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields No; calculations No; scoped CSS Yes; slots Yes; interactions No; identity selection No; custom HTML Yes.
Data interaction: No. UI action: Yes.
Accessibility: HTML is sanitized with DOMPurify. No scripts, iframes, or event handlers allowed.
{
"type": "html",
"id": "html",
"title": "Formatted content",
"span": 12,
"className": "hp-example-html",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-html { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"html": "<section class=\"summary\"><strong>Summary</strong><span>{{__field_key__}}</span></section>",
"slots": {
"header": "<span>Header content</span>",
"footer": "<small>Updated from Power BI data</small>"
}
}
custom — Custom HTML/CSS
Status: beta
Level: advanced
Recommended use: Safe app-like cards, lists, and slicers
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, html, text, repeat, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataset, disabled, heightMode, hidden, html, icon, id, interaction, interactions, minHeight, order, props, repeat, responsive, size, slots, span, style, subtitle, text, title, tooltip, type, uiAction, variant, visibility
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML Yes.
Data interaction: Yes. UI action: Yes.
Accessibility: Custom HTML is sanitized. Repeat rows support keyboard interaction.
Related: html, listGroup, card
{
"type": "custom",
"id": "custom",
"title": "Interactive record list",
"span": 12,
"className": "hp-example-custom",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-custom { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "click",
"internalMode": "none",
"internalScope": "self",
"externalMode": "filter",
"field": "__field_key__",
"operator": "=",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"html": "<header><strong>Records</strong></header>",
"repeat": {
"source": "rows",
"as": "row",
"limit": 100,
"template": "<span>{{__field_key__}}</span><small>{{__category_field_key__}}</small>",
"distinctBy": "__field_key__",
"sortBy": "__field_key__",
"sortDirection": "asc"
},
"slots": {
"empty": "<p>No records available.</p>",
"footer": "<small>Select a record to filter the report.</small>"
},
"data": {
"variant": "compact-list"
},
"interactions": {
"onClick": {
"action": "selectWhere",
"where": {
"op": "=",
"left": {
"field": "__field_key__"
},
"right": {
"valueFromRow": "__field_key__"
}
}
}
}
}
svg — Declarative SVG
Status: stable
Level: recommended
Recommended use: Animated KPI cards, diagrams, gauges, pictorial marks, and schematics
Required properties: type, id, viewBox, elements
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, viewBox, width, height, preserveAspectRatio, role, description, elements, dataContext, motion, performance, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataContext, dataset, description, disabled, elements, height, heightMode, hidden, icon, id, interaction, interactions, minHeight, motion, order, performance, preserveAspectRatio, props, responsive, role, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, viewBox, visibility, width
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: ariaLabel is recommended. Interactive marks are keyboard focusable and respond to Enter and Space. Motion respects the configured reduced-motion policy.
Related: svgMarkup, gauge, progressBar
{
"type": "svg",
"id": "svg",
"title": "Animated progress",
"span": 6,
"className": "hp-example-svg",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-svg { min-width: 0; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"viewBox": "0 0 800 240",
"height": 240,
"ariaLabel": "Completion progress",
"description": "A data-bound progress track and value label.",
"dataContext": {
"mode": "aggregate"
},
"motion": {
"enabled": true,
"reducedMotion": "respect-system",
"maxConcurrentAnimations": 12
},
"elements": [
{
"type": "defs",
"children": [
{
"type": "linearGradient",
"id": "progressGradient",
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 0,
"children": [
{
"type": "stop",
"offset": "0%",
"stopColor": "var(--hp-primary)"
},
{
"type": "stop",
"offset": "100%",
"stopColor": "var(--hp-success)"
}
]
}
]
},
{
"type": "rect",
"id": "track",
"x": 40,
"y": 120,
"width": 720,
"height": 22,
"rx": 11,
"fill": "var(--hp-muted)"
},
{
"type": "rect",
"id": "progress",
"x": 40,
"y": 120,
"width": {
"bind": "__measure_field_key__",
"scale": {
"type": "linear",
"domain": [
0,
100
],
"range": [
0,
720
],
"clamp": true
}
},
"height": 22,
"rx": 11,
"fill": "url(#progressGradient)",
"animation": {
"preset": "progress-fill",
"durationMs": 1000,
"easing": "ease-out"
}
},
{
"type": "text",
"x": 40,
"y": 82,
"text": {
"template": "{{__measure_field_key__}}%"
},
"fontSize": 28,
"fontWeight": 700
}
]
}
Advanced components
2 components
svgMarkup — Sanitized SVG markup
Status: beta
Level: advanced
Recommended use: Strictly sanitized raw SVG when declarative SVG cannot express the design
Required properties: type, id, svg
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, viewBox, width, height, preserveAspectRatio, role, description, svg, dataContext, motion, performance, order, responsive, heightMode, minHeight, aspectRatio
All allowed properties: ariaLabel, aspectRatio, className, css, data, dataContext, dataset, description, disabled, height, heightMode, hidden, icon, id, interaction, interactions, minHeight, motion, order, performance, preserveAspectRatio, props, responsive, role, size, slots, span, style, subtitle, svg, title, tooltip, type, uiAction, variant, viewBox, visibility, width
Capabilities: fields Yes; calculations No; scoped CSS Yes; slots Yes; interactions Yes; identity selection No; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: The component wrapper supplies accessible image semantics; include title/desc content in the SVG where useful.
Related: svg
{
"type": "svgMarkup",
"id": "svgMarkup",
"title": "Sanitized raw SVG",
"span": 6,
"className": "hp-example-svgMarkup",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-status { opacity: 1; }",
"interaction": {
"enabled": false,
"internalMode": "none",
"externalMode": "none"
},
"viewBox": "0 0 400 160",
"height": 160,
"ariaLabel": "Operating status",
"description": "Advanced sanitized SVG markup example.",
"svg": "<svg viewBox=\"0 0 400 160\" role=\"img\"><defs><linearGradient id=\"statusGradient\"><stop offset=\"0%\" stop-color=\"#2563eb\"/><stop offset=\"100%\" stop-color=\"#16a34a\"/></linearGradient></defs><rect id=\"statusTrack\" x=\"20\" y=\"50\" width=\"360\" height=\"40\" rx=\"20\" fill=\"url(#statusGradient)\"/><text x=\"200\" y=\"76\" text-anchor=\"middle\" fill=\"white\">{{__field_key__}}</text></svg>"
}
advancedChart — Advanced ECharts
Status: experimental
Level: advanced
Recommended use: JSON-only ECharts escape hatch for uncommon configurations not represented by a first-class HyperPBI chart
Required properties: type, id
Key properties: dataset, title, subtitle, span, className, hidden, props, style, css, slots, data, visibility, interactions, interaction, ariaLabel, icon, variant, size, disabled, tooltip, uiAction, height, maxDataRows, initOptions, setOption, options, category, measure, aggregation, x, y, pointSize, order, responsive, heightMode, minHeight, aspectRatio, events, drill
All allowed properties: aggregation, ariaLabel, aspectRatio, category, className, css, data, dataset, disabled, drill, events, height, heightMode, hidden, icon, id, initOptions, interaction, interactions, maxDataRows, measure, minHeight, options, order, pointSize, props, responsive, setOption, size, slots, span, style, subtitle, title, tooltip, type, uiAction, variant, visibility, x, y
Capabilities: fields Yes; calculations Yes; scoped CSS Yes; slots Yes; interactions Yes; identity selection Yes; custom HTML No.
Data interaction: Yes. UI action: Yes.
Accessibility: ECharts options are recursively sanitized. JavaScript functions, event handlers, executable markup, and external URLs are blocked.
{
"type": "advancedChart",
"id": "advancedChart",
"title": "Advanced ECharts dashboard",
"span": 12,
"className": "hp-example-advancedChart",
"hidden": false,
"style": {
"minWidth": 0
},
"css": ".hp-example-advancedChart { min-width: 0; }",
"interaction": {
"enabled": true,
"trigger": "auto",
"internalMode": "highlight",
"internalScope": "self",
"externalMode": "auto",
"selectionMode": "replace",
"multiSelect": true,
"showSelector": false,
"clearOnSecondClick": true
},
"category": "__category_field_key__",
"measure": "__measure_field_key__",
"x": "__x_measure_field_key__",
"y": "__y_measure_field_key__",
"pointSize": "__size_measure_field_key__",
"height": 420,
"maxDataRows": 30000,
"initOptions": {
"renderer": "canvas",
"devicePixelRatio": 2,
"useDirtyRect": false,
"useCoarsePointer": true,
"pointerSize": 44,
"locale": "EN"
},
"setOption": {
"notMerge": false,
"lazyUpdate": false,
"silent": false,
"replaceMerge": [
"series"
]
},
"options": {
"aria": {
"enabled": true
},
"title": {
"text": "Advanced analysis",
"left": "center"
},
"tooltip": {
"trigger": "axis",
"formatter": "{b}: {c}"
},
"legend": {
"type": "scroll",
"bottom": 0
},
"toolbox": {
"show": true,
"feature": {
"dataZoom": {},
"restore": {},
"saveAsImage": {}
}
},
"dataZoom": [
{
"type": "inside",
"start": 0,
"end": 100
},
{
"type": "slider",
"bottom": 28
}
],
"grid": {
"left": 52,
"right": 24,
"top": 56,
"bottom": 86,
"containLabel": true
},
"xAxis": {
"type": "category",
"axisLabel": {
"hideOverlap": true
}
},
"yAxis": {
"type": "value",
"splitLine": {
"show": true
}
},
"visualMap": {
"show": false,
"min": 0,
"max": 100
},
"series": [
{
"type": "bar",
"encode": {
"x": "__category_field_key__",
"y": "__measure_field_key__"
},
"emphasis": {
"focus": "series"
},
"markLine": {
"data": [
{
"type": "average",
"name": "Average"
}
]
}
},
{
"type": "line",
"encode": {
"x": "__category_field_key__",
"y": "__measure_field_key__"
},
"smooth": true,
"showSymbol": false
}
]
}
}
Schema version boundary
Dashboard schema 2.0 is the only active authoring and rendering contract. Schema 1.0 and missing versions are rejected by the production runtime. Developers may explicitly convert a legacy file with npm run schema:migrate-v1 -- input.json output.json; the temporary converter is outside the PBIVIZ bundle and runtime migration is intentionally unsupported. PBIVIZ package and Runtime Config versions are independent version numbers.