Number card

One big value with a label, a prefix and a suffix in their own colours, plus a change.

One big value with its label is set large and clear, made to be read from across a room. It fills the screen, sits in the middle, tucks into a corner, runs as one line, or runs as a band along an edge. You set the label, a prefix and a suffix each in its own colour, grouping and abbreviation for long figures, a change shown with an arrow and a good or bad tone, and a count from the previous value.

Live card

This card is drawn in your browser by the same code the Players run, with sample data.

Category: Operations. Tags: Numbers and metrics, Prices and rates.

Layouts

This core card fits every layout: full screen, center, corner, chip, strip, or any free rectangle.

Layouts: full, center, corner, chip, strip. Forms: landscape, portrait, square, strip.

Card layouts, themes and publishing. Browse the cards.

Data and privacy

This card uses its configured properties and live card data.

Properties

For theme, background, accent and position, see Common properties.

Set static properties in params. Bind data to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in params. Nested rows describe the contents of their parent property.

Static properties

NameTypeDefaultValues and limitsDescription
prefixstring""maxLength: 6Drawn before the number, smaller: a currency symbol.
prefixColorstring, nullnullpattern: "^(#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?|base|text|muted|faint|accent|accent2|accent3|onAccent|surface|surfaceStrong|stroke|highlight|danger|warning|success|cool|warm)$"A palette key (accent, muted, text, success, danger, warm ...) or a #RRGGBB colour. null: accent.
suffixstring""maxLength: 8Drawn after the number, smaller: a unit or a percent sign.
suffixColorstring, nullnullpattern: "^(#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?|base|text|muted|faint|accent|accent2|accent3|onAccent|surface|surfaceStrong|stroke|highlight|danger|warning|success|cool|warm)$"A palette key or a #RRGGBB colour. null: muted.
decimalsinteger, nullnullminimum: 0; maximum: 4Digits after the point. null: as many as the value needs, up to two (one when abbreviated).
groupingbooleantrueThousands separators (1,284).
compactstring"auto""auto", "always", "never"Abbreviate thousands, millions, billions and trillions (1.2K, 3.4M). auto does it when the full number would crowd the box.
signstring"auto""auto", "always", "negative"auto: a minus on a negative value that does not round to zero. always: a plus on positive values too. negative: a minus only on a negative value, as auto.
changeUnitstring"%"maxLength: 6Follows the change: % or a unit; empty for the bare number.
goodWhenstring"up""up", "down"Which direction of change is good (down for wait times and costs).

Dynamic properties

NameTypeDefaultValues and limitsDescription
valuenumber, nullnullminimum: -1000000000000000.0; maximum: 1000000000000000.0The big number. null shows a dash.
labelstring""maxLength: 40What the number is.
changenumber, nullnullminimum: -1000000000000000.0; maximum: 1000000000000000.0How much the value moved, shown with an arrow and a good or bad tone.
changeLabelstring""maxLength: 30What the change is against: vs last week.
previousnumber, nullnullminimum: -1000000000000000.0; maximum: 1000000000000000.0The value before it changed. With changedAt, every screen counts from it to the value together.
changedAtstring, nullnullISO 8601 instant the value changed. With previous, the number counts up or down from that instant.

Canvas example

Add this item to a playlist page’s primitives. Publish the playlist and assign a screen.

{
  "id": "number",
  "primitive": "card",
  "card": "number",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "example-key"
}

Write live data

The canvas example binds its data field to example-key. That value is a data key: a name this canvas item chooses, not the name of the card. Give each canvas item its own key when items should show different data, or share one key when they should show the same data. Keys are scoped to the project, follow the K/V key grammar, and cannot start with feed:.

Create this document before showing the card, then replace it to update the screen without republishing. Writes to a key that live canvas items bind are checked against each bound card’s dynamic properties. Use the same project as the playlist.

Save the document as card-data.json. The CLI reads the document itself, with no wrapper:

{
  "value": null,
  "label": "",
  "change": null,
  "changeLabel": "",
  "previous": null,
  "changedAt": null
}
screenrig card-data put example-key --file card-data.json

Or call the API directly. The API wraps the same document in a document field. An agent token already names its project, so no project header is sent; if you send ScreenRig-Project, it must match the token’s project. Supply your API authorization through the environment; see API authentication.

curl --request PUT "https://api.screenrig.ai/api/card-data/example-key" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"document":{"value":null,"label":"","change":null,"changeLabel":"","previous":null,"changedAt":null}}'