Dashboard Widget Catalog
The 25 widget types offered by the dashboard widget library — the catalog
shared by Buildiq and Launchpad via the communal
dashboardWidgetRegistry. Each type self-registers a
{renderer, form, defaultContent, displayName, icon} descriptor, so adding a
widget capability to @conduction/nextcloud-vue makes it available to every
consuming app at once.
Every type below was added to a live dashboard and verified rendering with real content through the browser — the screenshots are the actual rendered widgets, not mock-ups.
On a dashboard, enter edit mode → Add custom widget → pick a Widget type
from the dropdown. The modal swaps in that type's sub-form (documented per-widget
below) and stores the result in the placement's content blob. Per-widget chrome
(custom title, background/text colour) is stored separately in style_config.
How resolution works
BUILT_IN_WIDGETS (object-detail manifest widgets) → dashboardWidgetRegistry
(this catalog) → consumer cnRegistry inject (override wins last). A consuming
app never mutates the shared registry to re-skin a single widget — it overrides
at the CnWidgetGrid resolution boundary. See the
widget library overview and
docs/architecture/cards-and-widgets.md.
Two further types — kb-search and interaction-form — are registered for the
detail-page surface and so do not appear in the dashboard Add-widget picker.
The data type is likewise detail-page only.
Content & layout
Static, configuration-only widgets — no data source required.
Label · label
Single-line styled text label (font size, colour, weight, alignment) for dashboard grids.
→ CnLabelWidget · CnLabelWidgetForm
Text · text
Multi-line rich-text / markdown widget with optional table mode (sanitised HTML).
→ CnTextWidget · CnTextWidgetForm
Header Banner · header
Banner / header widget with background image, overlay, title/subtitle and CTA button.
→ CnHeaderWidget · CnHeaderWidgetForm
Divider · divider
Divider / spacer widget with line style, thickness, colour and optional heading.
→ CnDividerWidget · CnDividerWidgetForm
Image · image

Image widget with object-fit modes, optional link, and graceful error/placeholder state.
→ CnImageWidget · CnImageWidgetForm
Video · video

Video widget supporting YouTube/Vimeo/PeerTube embeds and Nextcloud-file/HTML5 playback.
External embeds require the host page to allow the provider's frame domain in its
Content-Security-Policy (frame-src).
→ CnVideoWidget · CnVideoWidgetForm
Navigation & links
Link Button · link

Link / button widget with single and list display modes; emits
internal-action / create-file for host-handled actions.
→ CnLinkButtonWidget · CnLinkButtonWidgetForm
Links · links

Sectioned link-collection widget with multiple layout styles. Each section holds
one or more {label, url, description} links.
→ CnLinksWidget · CnLinksWidgetForm
Menu · menu
Hierarchical menu widget (dropdown / sidebar / tree) with active-item highlighting.
→ CnMenuWidget · CnMenuWidgetForm
Quicklinks · quicklinks
Icon-grid quick-links widget with configurable icon size, columns and labels.
→ CnQuicklinksWidget · CnQuicklinksWidgetForm
Tile · tile

Clickable card with an icon, title, and configurable colours that navigates by
linkType (app → resolved Nextcloud route, url → external link in a new tab).
→ CnDashTileWidget · CnDashTileWidgetForm
Nextcloud data
Widgets backed by native Nextcloud APIs (Files, Contacts, Calendar, the Dashboard API).
Files · files

Files browser widget (folder navigation, thumbnails, mime filter, sort).
→ CnFilesWidget · CnFilesWidgetForm
People · people

People directory widget (grid/card/list) with filters and birthdays; data via
dataSource / cnPeopleSource.
→ CnPeopleWidget · CnPeopleWidgetForm
Calendar · calendar

Calendar widget (agenda/upcoming) over internal calendars + external ICS feeds.
The form offers a calendar picker (multiselect of the user's own calendars,
supplied by the consuming app via calendarsFetcher) instead of free-text
principal URIs; external ICS URLs must be https://.
→ CnCalendarWidget · CnCalendarWidgetForm
News · news

RSS/Atom news aggregator widget; items fetched via the consumer-supplied
itemsEndpoint. The consuming app's backend fetches and parses the feed URLs
stored in the placement content.
→ CnNewsWidget · CnNewsWidgetForm
Nextcloud widget · nc-widget

Proxy widget that renders a native Nextcloud Dashboard API widget (v1/v2) inside the grid.
→ CnNcWidgetWidget · CnNcDashboardWidgetForm
OpenRegister analytics
KPI / chart / list widgets that resolve their data from OpenRegister at runtime.
These read sibling-app data via a runtime source block or GraphQL — never a
hard manifest.dependencies entry.
Statistic / KPI · stat
Single-value KPI card. Resolves one number from an OpenRegister source block at
runtime (aggregate API) and renders it as a large formatted figure with optional
icon, caption, and click-through route.
→ CnStatWidget · CnStatWidgetForm
Comparison / delta · delta
Comparison / delta card. Resolves two OpenRegister aggregates (current and previous
window) and renders the current value plus the signed percentage change, coloured
by whether the movement is "good" (goodDirection).
→ CnDeltaWidget · CnDeltaWidgetForm
Gauge / utilization · gauge

Gauge / utilization card. Resolves a value and a target from OpenRegister and renders
a radial gauge of value-against-target, coloured by warn/danger thresholds.
→ CnGaugeWidget · CnGaugeWidgetForm
Statistic card · stats-block
Pulls a count from OpenRegister's GraphQL endpoint and forwards it to
CnStatsBlock for rendering.
→ CnStatsBlockWidget · CnStatsBlockWidgetForm
Chart · chart

ApexCharts wrapper supporting area, line, bar, pie, donut, and radialBar chart types
with Nextcloud-themed defaults. apexcharts / vue-apexcharts are peer dependencies.
→ CnChartWidget · CnChartWidgetForm
Object list · object-list

Fetches a page of OpenRegister objects (register + schema + filter + sort + limit)
at runtime and renders them as a compact column table.
→ CnObjectListWidget · CnObjectListWidgetForm
Table · table

Compact data table with a card wrapper, title header, and optional "View all" footer.
Supports external rows (rows) or self-fetch (register + schemaId). Shares the
object-list sub-form.
→ CnTableWidget · CnObjectListWidgetForm
Composition & finance
Container · container
Recursive sub-grid container widget hosting nested widget placements.
→ CnContainerWidget · CnContainerWidgetForm
Spend analytics · spend-analytics
Financial spend-analytics widget with period tabs (this month / quarter / year);
data via dataSource / cnSpendSource.
→ CnSpendAnalyticsWidget · CnSpendAnalyticsWidgetForm