Interface: PageDeclaration
Makaio Framework / contracts / PageDeclaration
Interface: PageDeclaration
Section titled “Interface: PageDeclaration”Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:103
Page declaration for packages.
Fully serializable — lazy-loads any custom components. To also register the
page in sidebar navigation (PageDefinitionRegistry), provide mode,
level, and component. The package loader will bridge this declaration to
a PageDefinition entry automatically.
Example
Section titled “Example”// Minimal page (slot-layout system only, no sidebar entry):{ id: 'my-page', name: 'My Page', scope: 'any', slots: [], defaultContent: {} }
// Page with sidebar navigation entry:{ id: 'my-page', name: 'My Page', scope: 'any', mode: 'switch', level: 'any', component: () => import('./MyPage.js'), slots: [], defaultContent: {},}Properties
Section titled “Properties”component?
Section titled “component?”
optionalcomponent?: () =>Promise<{default:ComponentType<PageComponentProps>; }>
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:156
Lazy-loaded page component for sidebar navigation.
Required when mode is provided. Must return a module with a default
export that accepts PageComponentProps.
Returns
Section titled “Returns”Promise<{ default: ComponentType<PageComponentProps>; }>
Example
Section titled “Example”() => import('./MyPage.js').then(m => ({ default: m.MyPage }))defaultContent
Section titled “defaultContent”defaultContent:
Partial<Record<SlotId,SlotPlacementDeclaration[]>>
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:124
Default content per slot.
description?
Section titled “description?”
optionaldescription?:string
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:113
Optional description shown in page listings.
optionalicon?: () =>Promise<{default:ComponentType<{size?:number; }>; }>
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:126
Optional page-level icon (lazy-loaded).
Returns
Section titled “Returns”Promise<{ default: ComponentType<{ size?: number; }>; }>
id:
string
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:109
Unique page identifier.
Will be namespaced to '<package-name>:<page-id>' by the loader.
layout?
Section titled “layout?”
optionallayout?:object
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:128
Optional page-level layout constraints.
minWidth?
Section titled “minWidth?”
optionalminWidth?:number
Minimum page width in pixels.
level?
Section titled “level?”
optionallevel?:UiNavigationLevel
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:145
Navigation level for sidebar registration.
Required when mode is provided.
optionalmode?:PageMode
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:139
Navigation mode for sidebar registration.
When provided alongside level and component, the package loader
registers this page in the sidebar navigation (PageDefinitionRegistry).
Omit to register in the slot-layout system only (pageRegistry).
name:
string
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:111
Human-readable name.
order?
Section titled “order?”
optionalorder?:number
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:162
Display order in sidebar (lower = first).
Only used when mode is provided. Defaults to 50 when omitted.
route?
Section titled “route?”
optionalroute?:string
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:118
Route path relative to the package mount point.
Example
Section titled “Example”`'dashboard'` becomes `/extensions/my-package/dashboard`scope:
UiScope
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:120
UI scope for this page context.
slots:
SlotDeclaration[]
Defined in: ../../../packages/contracts/src/extension/contributions/page-types.ts:122
Slot definitions for this page’s layout.