ObjectStackObjectStack

Page

Page protocol schemas

Page Region Schema

A named region in the template where components are dropped.

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

TypeScript Usage

import { BlankPageLayout, BlankPageLayoutItem, ElementDataSource, InterfacePageConfig, Page, PageComponent, PageComponentType, PageRegion, PageType, PageVariable, RecordReviewConfig } from '@objectstack/spec/ui';
import type { BlankPageLayout, BlankPageLayoutItem, ElementDataSource, InterfacePageConfig, Page, PageComponent, PageComponentType, PageRegion, PageType, PageVariable, RecordReviewConfig } from '@objectstack/spec/ui';

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

BlankPageLayout

Properties

PropertyTypeRequiredDescription
columnsintegerNumber of grid columns
rowHeightintegerHeight of each grid row in pixels
gapintegerGap between grid items in pixels
itemsObject[]Positioned components on the canvas

BlankPageLayoutItem

Properties

PropertyTypeRequiredDescription
componentIdstringReference to a PageComponent.id in the page
xintegerGrid column position (0-based)
yintegerGrid row position (0-based)
widthintegerWidth in grid columns
heightintegerHeight in grid rows

ElementDataSource

Properties

PropertyTypeRequiredDescription
objectstringObject to query
viewstringoptionalNamed view to apply
filter[__schema0](./__schema0)optionalAdditional filter criteria
sortObject[]optionalSort order
limitintegeroptionalMax records to display

InterfacePageConfig

Interface-level page configuration (Airtable parity)

Properties

PropertyTypeRequiredDescription
sourcestringoptionalSource object name for the page
levelsintegeroptionalNumber of hierarchy levels to display
filterByObject[]optionalPage-level filter criteria
appearanceObjectoptionalAppearance and visualization configuration
userFiltersObjectoptionalUser filter configuration
userActionsObjectoptionalUser action toggles
addRecordObjectoptionalAdd record entry point configuration
showRecordCountbooleanoptionalShow record count at page bottom
allowPrintingbooleanoptionalAllow users to print the page

Page

Properties

PropertyTypeRequiredDescription
namestringPage unique name (lowercase snake_case)
labelstring | ObjectDisplay label: plain string or i18n translation object
descriptionstring | ObjectoptionalDisplay label: plain string or i18n translation object
iconstringoptionalPage icon name
typeEnum<'record' | 'home' | 'app' | 'utility' | 'dashboard' | 'grid' | 'list' | 'gallery' | 'kanban' | 'calendar' | 'timeline' | 'form' | 'record_detail' | 'record_review' | 'overview' | 'blank'>Page type
variablesObject[]optionalLocal page state variables
objectstringoptionalBound object (for Record pages)
recordReviewObjectoptionalRecord review configuration (required when type is "record_review")
blankLayoutObjectoptionalFree-form grid layout for blank pages (used when type is "blank")
templatestringLayout template name (e.g. "header-sidebar-main")
regionsObject[]Defined regions with components
isDefaultboolean
assignedProfilesstring[]optional
interfaceConfigObjectoptionalInterface-level page configuration (for Airtable-style interface pages)
ariaObjectoptionalARIA accessibility attributes

PageComponent

Properties

PropertyTypeRequiredDescription
typeEnum<'page:header' | 'page:footer' | 'page:sidebar' | 'page:tabs' | 'page:accordion' | 'page:card' | 'page:section' | 'record:details' | 'record:highlights' | 'record:related_list' | 'record:activity' | 'record:chatter' | 'record:path' | 'app:launcher' | 'nav:menu' | 'nav:breadcrumb' | 'global:search' | 'global:notifications' | 'user:profile' | 'ai:chat_window' | 'ai:suggestion' | 'element:text' | 'element:number' | 'element:image' | 'element:divider' | 'element:button' | 'element:filter' | 'element:form' | 'element:record_picker'> | stringComponent Type (Standard enum or custom string)
idstringoptionalUnique instance ID
labelstring | ObjectoptionalDisplay label: plain string or i18n translation object
propertiesRecord<string, any>Component props passed to the widget. See component.zod.ts for schemas.
eventsRecord<string, string>optionalEvent handlers map
styleRecord<string, string>optionalInline styles or utility classes
classNamestringoptionalCSS class names
visibilitystringoptionalVisibility filter/formula
dataSourceObjectoptionalPer-element data binding for multi-object pages
responsiveObjectoptionalResponsive layout configuration
ariaObjectoptionalARIA accessibility attributes

PageComponentType

Allowed Values

  • page:header
  • page:footer
  • page:sidebar
  • page:tabs
  • page:accordion
  • page:card
  • page:section
  • record:details
  • record:highlights
  • record:related_list
  • record:activity
  • record:chatter
  • record:path
  • app:launcher
  • nav:menu
  • nav:breadcrumb
  • global:search
  • global:notifications
  • user:profile
  • ai:chat_window
  • ai:suggestion
  • element:text
  • element:number
  • element:image
  • element:divider
  • element:button
  • element:filter
  • element:form
  • element:record_picker

PageRegion

Properties

PropertyTypeRequiredDescription
namestringRegion name (e.g. "sidebar", "main", "header")
widthEnum<'small' | 'medium' | 'large' | 'full'>optional
componentsObject[]Components in this region

PageType

Page type — platform or interface page types

Allowed Values

  • record
  • home
  • app
  • utility
  • dashboard
  • grid
  • list
  • gallery
  • kanban
  • calendar
  • timeline
  • form
  • record_detail
  • record_review
  • overview
  • blank

PageVariable

Properties

PropertyTypeRequiredDescription
namestringVariable name
typeEnum<'string' | 'number' | 'boolean' | 'object' | 'array' | 'record_id'>
defaultValueanyoptional
sourcestringoptionalComponent ID that writes to this variable

RecordReviewConfig

Properties

PropertyTypeRequiredDescription
objectstringTarget object for review
filter[__schema0](./__schema0)optionalFilter criteria for review queue
sortObject[]optionalSort order for review queue
displayFieldsstring[]optionalFields to display on the review page
actionsObject[]Review actions
navigationEnum<'sequential' | 'random' | 'filtered'>Record navigation mode
showProgressbooleanShow review progress indicator

On this page