CheckRuns
The checks on a commit or pull request.
1 failing, 3 successful, and 1 skipped checks
- test (ubuntu-latest)CI / pull_request3m 41sDetails test (ubuntu-latest)
- lintCI / pull_request48sDetails lint
- typecheckCI / pull_request1m 12sDetails typecheck
- build (node 22)CI / pull_request2m 05sDetails build (node 22)
- preview deployDeploy / pull_requestDetails preview deploy
View code
<CheckRuns
locale="en"
runs={[
{ name: "test (ubuntu-latest)", workflow: "CI / pull_request", state: "failure", duration: "3m 41s", href: "/acme/delta/actions/runs/8812/job/2" },
{ name: "lint", workflow: "CI / pull_request", state: "success", duration: "48s", href: "/acme/delta/actions/runs/8812/job/1" },
{ name: "typecheck", workflow: "CI / pull_request", state: "success", duration: "1m 12s", href: "/acme/delta/actions/runs/8812/job/3" },
{ name: "build (node 22)", workflow: "CI / pull_request", state: "success", duration: "2m 05s", href: "/acme/delta/actions/runs/8812/job/4" },
{ name: "preview deploy", workflow: "Deploy / pull_request", state: "skipped", href: "/acme/delta/actions/runs/8813/job/1" },
]}
labels={{
counts: {
failure: (n) => `${n} failing`,
pending: (n) => `${n} pending`,
success: (n) => `${n} successful`,
skipped: (n) => `${n} skipped`,
cancelled: (n) => `${n} cancelled`,
},
summary: (list, total) => `${list} ${total === 1 ? "check" : "checks"}`,
states: { failure: "Failed", pending: "In progress", success: "Passed", skipped: "Skipped", cancelled: "Cancelled" },
details: "Details",
empty: "No checks",
}}
/>Demo apps
Whole pages built only from @sdxc/ui, each for an invented product with its own palette and type. They open in a new tab.
- Issue trackerCairnCairn, an invented issue tracker: grouped issue lists with filters in the address, a drag-and-drop board, projects on a roadmap, cycles with burn-up charts and an inbox./demo/apps/cairn
- Social networkChorusChorus, an invented social network: a live timeline with pictures, link cards, polls and threads, profiles, grouped notifications, search and messages./demo/apps/chorus
- Code hostDeltaDelta, a code host whose one repository is its own source: a file tree beside the code, line links, blame and the commits list, every file and commit read from git when the site is built./demo/apps/delta
- CMSInkwellInkwell, a demo CMS built from @sdxc/ui/app: posts with count tabs and quick edit, an editor with a quiet save status and a loud Publish, media and settings./demo/apps/inkwell
- Ops dashboardPulsePulse, an invented ops dashboard: Northwind's services with live filters, a peek sheet and a bulk bar, metrics that switch one chart, incidents, deploys and settings./demo/apps/pulse
- Support inboxRelayRelay, an invented support inbox: mailboxes, conversations and the open conversation on one screen, with contacts, reports and settings./demo/apps/relay
- Chat assistantTernTern, an invented chat assistant: conversations with streamed replies, code and tables, projects, a canvas, sharing and settings./demo/apps/tern
Every demo, landings and docs sites alike, is listed in the demo gallery.
Installation
An ordinary dependency: install it, import the theme once, and import the component where it is used.
npm add @sdxc/ui remiximport "@sdxc/ui/theme.css";Usage
import { CheckRuns } from "@sdxc/ui/app";Renders the summary sentence as the <summary> of a <details> that lists every run, failed
ones first, opening on its own when a run failed. It is complete as server HTML: the native
disclosure needs no island, and it reads only the theme's shared tokens.
Examples
While checks are running
2 pending and 2 successful checks
- test (ubuntu-latest)CI / pushDetails test (ubuntu-latest)
- test (windows-latest)CI / pushDetails test (windows-latest)
- lintCI / push51sDetails lint
- typecheckCI / push1m 09sDetails typecheck
View code
<CheckRuns
locale="en"
runs={[
{ name: "lint", workflow: "CI / push", state: "success", duration: "51s", href: "…" },
{ name: "test (ubuntu-latest)", workflow: "CI / push", state: "pending", href: "…" },
{ name: "test (windows-latest)", workflow: "CI / push", state: "pending", href: "…" },
{ name: "typecheck", workflow: "CI / push", state: "success", duration: "1m 09s", href: "…" },
]}
labels={labels}
/>Every check passed
24 successful checks
- lintCI / pull_request1m 00sDetails lint
- typecheckCI / pull_request2m 17sDetails typecheck
- buildCI / pull_request3m 34sDetails build
- docsCI / pull_request4m 51sDetails docs
- test (ubuntu-latest, node 18)CI / pull_request1m 08sDetails test (ubuntu-latest, node 18)
- test (ubuntu-latest, node 20)CI / pull_request2m 25sDetails test (ubuntu-latest, node 20)
- test (ubuntu-latest, node 22)CI / pull_request3m 42sDetails test (ubuntu-latest, node 22)
- test (ubuntu-latest, node 24)CI / pull_request4m 59sDetails test (ubuntu-latest, node 24)
- test (macos-latest, node 18)CI / pull_request1m 16sDetails test (macos-latest, node 18)
- test (macos-latest, node 20)CI / pull_request2m 33sDetails test (macos-latest, node 20)
- test (macos-latest, node 22)CI / pull_request3m 50sDetails test (macos-latest, node 22)
- test (macos-latest, node 24)CI / pull_request4m 07sDetails test (macos-latest, node 24)
- test (windows-latest, node 18)CI / pull_request1m 24sDetails test (windows-latest, node 18)
- test (windows-latest, node 20)CI / pull_request2m 41sDetails test (windows-latest, node 20)
- test (windows-latest, node 22)CI / pull_request3m 58sDetails test (windows-latest, node 22)
- test (windows-latest, node 24)CI / pull_request4m 15sDetails test (windows-latest, node 24)
- e2e (chromium)CI / pull_request1m 32sDetails e2e (chromium)
- e2e (firefox)CI / pull_request2m 49sDetails e2e (firefox)
- e2e (webkit)CI / pull_request3m 06sDetails e2e (webkit)
- bundle sizeCI / pull_request4m 23sDetails bundle size
- license checkCI / pull_request1m 40sDetails license check
- changesetCI / pull_request2m 57sDetails changeset
- CodeQLSecurity / pull_request3m 14sDetails CodeQL
- preview deployCI / pull_request4m 31sDetails preview deploy
View code
<CheckRuns runs={runs} locale="en" labels={labels} />Props
Read from the component's own types, so every prop, every default and every allowed value is listed.
| Prop | Type | Required | Description |
|---|---|---|---|
runs | readonly Run[] | Yes | Every run in any order; the part sorts them failures first. |
labels | Labels | Yes | The strings the summary, icons and links show, so the part reads in any language. |
locale | string | No | Locale the counts are joined in ("1 failing, 1 pending and 22 successful"). |
open | boolean | No | Whether the list starts open. Unset, it opens exactly when a run failed, so the failure is on screen and a green list stays one line. |
Also accepts everything in Omit<TagProps<"details">, "children" | "open">.
Types
| Name | Values | What it decides |
|---|---|---|
State | "success" | "failure" | "pending" | "skipped" | "cancelled" | Where one run stands; failure reads danger, pending warning, success success. |
Also exported
Other components this module publishes.
sortCheckRunscheckRunsSummaryCheckRunIcon