Skip to main content

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.

Adding a widget

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

label widget rendering a styled single-line heading

Single-line styled text label (font size, colour, weight, alignment) for dashboard grids. → CnLabelWidget · CnLabelWidgetForm

Text · text

text widget rendering a markdown heading and body

Multi-line rich-text / markdown widget with optional table mode (sanitised HTML). → CnTextWidget · CnTextWidgetForm

Header Banner · header

header banner widget with title text

Banner / header widget with background image, overlay, title/subtitle and CTA button. → CnHeaderWidget · CnHeaderWidgetForm

Divider · divider

divider widget rendering a horizontal rule

Divider / spacer widget with line style, thickness, colour and optional heading. → CnDividerWidget · CnDividerWidgetForm

Image · image

image widget rendering the Nextcloud logo

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

Video · video

video widget embedding an external player

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


link button widget with an Open Files action

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

links widget rendering a titled section of links

Sectioned link-collection widget with multiple layout styles. Each section holds one or more {label, url, description} links. → CnLinksWidget · CnLinksWidgetForm

menu widget rendering a navigation item

Hierarchical menu widget (dropdown / sidebar / tree) with active-item highlighting. → CnMenuWidget · CnMenuWidgetForm

quicklinks widget rendering an icon link

Icon-grid quick-links widget with configurable icon size, columns and labels. → CnQuicklinksWidget · CnQuicklinksWidgetForm

Tile · tile

tile widget rendering a clickable card

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 widget rendering a folder listing

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

People · people

people directory widget rendering user cards

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

Calendar · calendar

calendar widget rendering an agenda view

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

news widget rendering RSS headlines

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

nc-widget proxy rendering a native Nextcloud dashboard 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

stat KPI widget rendering a single large figure

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

delta widget rendering a value with percentage change

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 widget rendering a value-against-target bar

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

stats-block widget rendering a labelled count card

Pulls a count from OpenRegister's GraphQL endpoint and forwards it to CnStatsBlock for rendering. → CnStatsBlockWidget · CnStatsBlockWidgetForm

Chart · chart

chart widget rendering an ApexCharts bar 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

object-list widget rendering OpenRegister objects as a table

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

table widget rendering a compact data 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

container widget hosting a nested sub-grid

Recursive sub-grid container widget hosting nested widget placements. → CnContainerWidget · CnContainerWidgetForm

Spend analytics · spend-analytics

spend-analytics widget with period tabs

Financial spend-analytics widget with period tabs (this month / quarter / year); data via dataSource / cnSpendSource. → CnSpendAnalyticsWidget · CnSpendAnalyticsWidgetForm