Skip to main content

CnFederationStatus

Federation-status widget. Renders an aggregate summary (counts per up / degraded / down / unknown) plus a per-node list with status dot, URL, last-checked timestamp, and click-emit for drilldown. Status strings are normalised so consumers don't need an exhaustive enum.

Try it

<CnFederationStatus
title="Federation directory"
description="Live availability across the federation."
:nodes="nodes"
@node-click="openNodeDetail" />
const nodes = [
{ id: 'a', name: 'Node A', url: 'https://a.example.org', status: 'up' },
{ id: 'b', name: 'Node B', url: 'https://b.example.org', status: 'degraded', message: 'High latency' },
{ id: 'c', name: 'Node C', url: 'https://c.example.org', status: 'down', lastChecked: '2026-05-20T11:00:00Z' },
]

Status normalisation

Input stringsNormalised toColour
up, online, ok, healthy, availableup--color-success
degraded, partial, slow, warningdegraded--color-warning
down, offline, error, failed, unhealthydown--color-error
anything elseunknown--color-text-maxcontrast

Props

PropTypeDefaultDescription
nodesArray<{id?,name?,url?,status,message?,lastChecked?}>[]Nodes to render.
titleString''Optional widget heading.
descriptionString''Optional widget description.
hideSummaryBooleanfalseHide the aggregate count row.
upLabel / degradedLabel / downLabel / unknownLabelString'up' / 'degraded' / 'down' / 'unknown'Status-chip / row labels.
emptyLabelString'No federation nodes registered.'Empty-state text.
lastCheckedLabelString'Last checked'Prefix for the per-node last-checked timestamp.
sort'status'|'name'|'none''status'Per-node sort. Status order: down → degraded → unknown → up.

Events

EventPayloadDescription
node-clicknodeClicked node, original shape.