ObjectStackObjectStack

Dashboard

Dashboard protocol schemas

Color variant for dashboard widgets (e.g., KPI cards).

Source: packages/spec/src/ui/dashboard.zod.ts

TypeScript Usage

import { Dashboard, DashboardHeader, DashboardHeaderAction, DashboardWidget, GlobalFilter, GlobalFilterOptionsFrom, WidgetActionType, WidgetColorVariant } from '@objectstack/spec/ui';
import type { Dashboard, DashboardHeader, DashboardHeaderAction, DashboardWidget, GlobalFilter, GlobalFilterOptionsFrom, WidgetActionType, WidgetColorVariant } from '@objectstack/spec/ui';

// Validate data
const result = Dashboard.parse(data);

Dashboard

Properties

PropertyTypeRequiredDescription
namestringDashboard unique name
labelstringDashboard label
descriptionstringoptionalDashboard description
headerObjectoptionalDashboard header configuration
widgetsObject[]Widgets to display
columnsintegeroptionalNumber of grid columns (default 12)
gapintegeroptionalGrid gap in Tailwind spacing units
refreshIntervalnumberoptionalAuto-refresh interval in seconds
dateRangeObjectoptionalGlobal dashboard date range filter configuration
globalFiltersObject[]optionalGlobal filters that apply to all widgets in the dashboard
ariaObjectoptionalARIA accessibility attributes
performanceObjectoptionalPerformance optimization settings
protectionObjectoptionalPackage author protection block — lock policy for this dashboard.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact | package | env-forced).
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package | org | env-forced).
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.

DashboardHeader

Dashboard header configuration

Properties

PropertyTypeRequiredDescription
showTitlebooleanShow dashboard title in header
showDescriptionbooleanShow dashboard description in header
actionsObject[]optionalHeader action buttons

DashboardHeaderAction

Dashboard header action

Properties

PropertyTypeRequiredDescription
labelstringAction button label
actionUrlstringURL or target for the action
actionTypeEnum<'script' | 'url' | 'modal' | 'flow' | 'api'>optionalType of action
iconstringoptionalIcon identifier for the action button

DashboardWidget

Properties

PropertyTypeRequiredDescription
idstringUnique widget identifier (snake_case)
titlestringoptionalWidget title
descriptionstringoptionalWidget description text below the header
typeEnum<'bar' | 'horizontal-bar' | 'column' | 'line' | 'area' | 'pie' | 'donut' | 'funnel' | 'scatter' | 'treemap' | 'sankey' | 'gauge' | 'solid-gauge' | 'metric' | 'kpi' | 'bullet' | 'radar' | 'table' | 'pivot'>Visualization type
chartConfigObjectoptionalChart visualization configuration
colorVariantEnum<'default' | 'blue' | 'teal' | 'orange' | 'purple' | 'success' | 'warning' | 'danger'>optionalWidget color variant for theming
requiresObjectstringoptionalHide the widget unless the named object is registered
requiresServicestringoptionalHide the widget unless the named kernel service is registered
actionUrlstringoptionalURL or target for the widget action button
actionTypeEnum<'script' | 'url' | 'modal' | 'flow' | 'api'>optionalType of action for the widget action button
actionIconstringoptionalIcon identifier for the widget action button
filter[__schema0](./__schema0)optionalPresentation-scope filter (runtimeFilter)
compareTostring | string | ObjectoptionalPeriod-over-period comparison window
datasetstringDataset name to bind (ADR-0021)
dimensionsstring[]optionalDimension names — X/group/split
valuesstring[]Measure names — Y (at least one)
layoutObjectoptionalGrid layout position (auto-flowed when omitted)
optionsanyoptionalWidget specific configuration
filterBindingsRecord<string, string | boolean>optionalPer-widget dashboard-filter bindings: filter name → this widget's field, or false to opt out
suppressWarningsstring[]optionalBuild diagnostic rule ids suppressed on this widget
responsiveObjectoptionalResponsive layout configuration
ariaObjectoptionalARIA accessibility attributes

GlobalFilter

Properties

PropertyTypeRequiredDescription
namestringoptionalStable filter name (variable key); defaults to field
fieldstringField name to filter on
labelstringoptionalDisplay label for the filter
typeEnum<'text' | 'select' | 'date' | 'number' | 'lookup'>optionalFilter input type
optionsObject[]optionalStatic filter options
optionsFromObjectoptionalDynamic filter options from object
defaultValuestring | number | booleanoptionalDefault filter value
scopeEnum<'dashboard' | 'widget'>Filter application scope
targetWidgetsstring[]optionalWidget IDs to apply this filter to

GlobalFilterOptionsFrom

Dynamic filter options from object

Properties

PropertyTypeRequiredDescription
objectstringSource object name
valueFieldstringField to use as option value
labelFieldstringField to use as option label
filter[__schema0](./__schema0)optionalFilter to apply to source object

WidgetActionType

Widget action type

Allowed Values

  • script
  • url
  • modal
  • flow
  • api

WidgetColorVariant

Widget color variant

Allowed Values

  • default
  • blue
  • teal
  • orange
  • purple
  • success
  • warning
  • danger

On this page