Core Widgets
Core widgets are the reusable visual building blocks that ship with the platform out of the box. They are designed to cover the most common command-surface patterns without forcing a product team to start from a blank screen.
The current built-in widget set is intentionally opinionated:
- feed-based situational awareness
- narrative context and note-taking
- API form generation and request submission
- structural workspace composition
All of them are registered by the core extension in src/extensions/core/index.ts.
Widget contract
Every widget is registered as a WidgetDefinition with:
idtitledescriptioncategorykindsourcedefaultSizerequiredPermissions- optional
tags - optional
exampleProps
That means each widget can be:
- discovered in the registry
- permissioned consistently
- reused across multiple dashboards
- documented once and composed many times
Shipped core widgets
News Feed
- Widget id:
news-feed - Category:
Feeds - Kind:
feed - Default size:
4 x 5 - Permissions:
news:read - Example props:
{ limit: 6 }
What it is:
News Feed is the compact event tape for market-moving headlines and narrative context.
What it is good for:
- catalyst monitoring
- macro pulse sidebars
- event-driven desks
- pre-open briefing surfaces
Where it is used now:
Demo / OverviewDemo / Cross-AssetAdmin / Admin Console
Why it matters:
Strong operational dashboards are rarely just numbers. The news feed gives the platform a reusable context layer so users understand why a surface is moving, not only that it moved.
Markdown
- Widget id:
markdown-note - Category:
Content - Kind:
custom - Default size:
6 x 6 - Permissions:
dashboard:view - Example props: narrative markdown note content
What it is:
Markdown renders structured narrative content inside a widget using regular markdown.
What it is good for:
- runbooks
- operator notes
- dashboard context
- embedded documentation
Where it is used now:
- available through the widget catalog for narrative and documentation-heavy surfaces
Why it matters:
Not every useful dashboard panel is a chart or a feed. This widget gives the platform a reusable way to mix explanation, instructions, and lightweight tables into operational surfaces.
Row
- Widget id:
workspace-row - Category:
Workspace - Kind:
custom - Default size:
12 x 1 - Permissions:
dashboard:view
What it is:
Row is a structural workspace widget used to divide a workspace into horizontal sections.
What it is good for:
- grouping widgets into bands
- separating dashboard sections
- organizing large workspace canvases
- creating optional visible or hidden row boundaries
Where it is used now:
- workspace composition and layout structuring in the workspace studio
Why it matters:
This widget extends the platform beyond pure content panels. It gives the workspace builder a first-class structural primitive instead of forcing layout grouping to be inferred from arbitrary widget positions.
AppComponent
- Widget id:
app-component - Category:
API - Kind:
custom - Default size:
8 x 8 - Permissions:
dashboard:view - Example props: explicit OpenAPI URL, Swagger docs URL, or service root plus auth mode; route binding is instance-scoped
What it is:
AppComponent reads an OpenAPI schema from the explicit URL the user provides, lets a user bind one
widget instance to one API operation, and renders the generated request form directly inside the widget body.
What it is good for:
- operator-facing API tools
- internal submission forms
- authenticated request workflows
- workspace composition around service endpoints
Where it is used now:
- available through the widget catalog for user-configurable workspace surfaces
Why it matters:
This widget turns backend route contracts into reusable workspace components instead of forcing teams to hand-build one-off forms for every internal API action.
Current platform composition
The core extension currently uses the widget set in three ways:
News Feedprovides a reusable narrative/event context pattern for shipped surfaces.Markdowngives the platform a built-in narrative and documentation widget for operator-facing dashboards.AppComponentgives the platform a generic authenticated API form builder driven by OpenAPI instead of custom page-level forms.Rowadds structural workspace composition as a first-class primitive inside the workspace studio.
When to build a new widget instead of reusing core
Build a new widget when:
- the domain needs a new visual pattern
- the existing props model is no longer clean
- the interaction model is product-specific
- the widget belongs in an optional vendor integration
Reuse core widgets when:
- you need a narrative or event feed
- you need markdown-based documentation or notes
- you need a generic OpenAPI-backed request form
- you need structural row grouping in workspaces