Skip to content

Interface: TileDeclaration

Makaio Framework


Makaio Framework / contracts / TileDeclaration

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:83

Tile declaration contributed by a package.

Packages declare tiles they provide for pane placement. These are registered with TileRegistry and shown in the “Add Pane” palette.

const terminalExtension: MakaioExtension = {
name: 'terminal',
ui: {
tiles: [
{
id: 'status',
name: 'Status',
description: 'Runtime status panel',
scope: 'global',
icon: () => import('lucide-react').then(m => ({ default: m.Activity })),
allowMultiple: true,
capabilities: { supportsFullscreen: true },
renderers: {
react: () => import('./ui/StatusTile.js'),
},
},
],
},
};

optional allowMultiple?: boolean

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:123

Whether multiple instances of this tile are allowed simultaneously.

Defaults to true. When false, only one instance can exist at a time.


optional capabilities?: TileCapabilities

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:125

Optional capability flags for the tile.


optional contextDependencies?: UiContextDimension[]

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:132

Context dimensions this tile’s state depends on.

When declared, the host can remount the tile when any listed dimension changes to prevent stale in-memory state from leaking across contexts.


optional description?: string

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:104

Optional description of tile purpose.

Shown in the “Add Pane” palette below the name.


icon: TileIconLoader

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:117

Icon loader for the tile.

Lazy-loads an icon component for the “Add Pane” palette. Required for tiles to appear in the palette.


id: string

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:91

Unique tile identifier.

Must be unique across all packages. Use the package name as a prefix to avoid collisions.

`'status'`, `'session-summary'`

name: string

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:98

Display name for the tile.

Human-readable name shown in the “Add Pane” palette.

`'Status'`, `'Session Summary'`

renderers: TileRenderers

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:139

Platform-specific renderers.

Maps platform names to lazy-loaded component modules. At minimum, the 'react' platform is required for the web UI.


optional scope?: UiScope

Defined in: ../../../packages/contracts/src/extension/contributions/tile-types.ts:110

Tile scope — where the tile is available.

Defaults to 'any' when not specified.