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, PageComponentType, PageType, PageVariable, RecordReviewConfig } from '@objectstack/spec/ui';
import type { BlankPageLayout, BlankPageLayoutItem, ElementDataSource, InterfacePageConfig, PageComponentType, PageType, PageVariable, RecordReviewConfig } from '@objectstack/spec/ui';
// Validate data
const result = BlankPageLayout.parse(data);BlankPageLayout
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| columns | integer | ✅ | Number of grid columns |
| rowHeight | integer | ✅ | Height of each grid row in pixels |
| gap | integer | ✅ | Gap between grid items in pixels |
| items | Object[] | ✅ | Positioned components on the canvas |
BlankPageLayoutItem
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| componentId | string | ✅ | Reference to a PageComponent.id in the page |
| x | integer | ✅ | Grid column position (0-based) |
| y | integer | ✅ | Grid row position (0-based) |
| width | integer | ✅ | Width in grid columns |
| height | integer | ✅ | Height in grid rows |
ElementDataSource
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| object | string | ✅ | Object to query |
| view | string | optional | Named view to apply |
| filter | [__schema0](./__schema0) | optional | Additional filter criteria |
| sort | Object[] | optional | Sort order |
| limit | integer | optional | Max records to display |
InterfacePageConfig
Interface-level page configuration (Airtable parity)
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| source | string | optional | Source object name for the page |
| levels | integer | optional | Number of hierarchy levels to display |
| filterBy | Object[] | optional | Page-level filter criteria |
| appearance | Object | optional | Appearance and visualization configuration |
| userFilters | Object | optional | User filter configuration |
| userActions | Object | optional | User action toggles |
| addRecord | Object | optional | Add record entry point configuration |
| showRecordCount | boolean | optional | Show record count at page bottom |
| allowPrinting | boolean | optional | Allow users to print the page |
PageComponentType
Allowed Values
page:headerpage:footerpage:sidebarpage:tabspage:accordionpage:cardpage:sectionrecord:detailsrecord:highlightsrecord:related_listrecord:activityrecord:chatterrecord:pathrecord:alertrecord:quick_actionsrecord:reference_railrecord:historyapp:launchernav:menunav:breadcrumbglobal:searchglobal:notificationsuser:profileai:chat_windowai:suggestionelement:textelement:numberelement:imageelement:dividerelement:buttonelement:filterelement:formelement:record_picker
PageType
Page type — platform or interface page types
Allowed Values
recordhomeapputilitydashboardgridlistgallerykanbancalendartimelineformrecord_detailrecord_reviewoverviewblank
PageVariable
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| name | string | ✅ | Variable name |
| type | Enum<'string' | 'number' | 'boolean' | 'object' | 'array' | 'record_id'> | ✅ | |
| defaultValue | any | optional | |
| source | string | optional | Component ID that writes to this variable |
RecordReviewConfig
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| object | string | ✅ | Target object for review |
| filter | [__schema0](./__schema0) | optional | Filter criteria for review queue |
| sort | Object[] | optional | Sort order for review queue |
| displayFields | string[] | optional | Fields to display on the review page |
| actions | Object[] | ✅ | Review actions |
| navigation | Enum<'sequential' | 'random' | 'filtered'> | ✅ | Record navigation mode |
| showProgress | boolean | ✅ | Show review progress indicator |