Components/Layout

Card

Cards are self-contained surfaces that each carry one unit of information. They group a piece of content with whatever the reader needs in order to act on it, so a page can set many of them side by side without the boundaries between them blurring. The name at the top and the action at the bottom are what tell a reader whether this is the one to deal with.

import { Card } from '@growth-protocol-ai/alpha';

On this page

Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it — one of them single-source.

Review the five insights
variant
status
state
Card.tsxtsx
1import { Card } from '@growth-protocol-ai/alpha';
2
3const RANGES = [
7];
8
9const TABLE = (
41);
42
43const CONTENT = (
53);
54
55<Card variant="standalone" status="critical" highlighted={false}>
56 {variant === 'table' ? TABLE : CONTENT}
57</Card>

When to use

Reach for a card when a screen has several things to report and the reader will act on one of them at a time. Give each card one thing to say, one figure to say it with and one action to take about it — a card that carries two unrelated readings is two cards, and the reader has to unpick which of them the action belongs to.

When not to use

Do not use a card where the arrangement is the point rather than the unit: rows of blocks that each carry their own toolbar, or a board that scrolls inside itself, are the Canvas module, and Card is what goes on it. The tell is whether you are reaching for the component to hold content or to place it — placement belongs to the container, and a card never knows where it sits.

variant3 values

What picks a variant is what the card is sitting on, not what it holds. A standalone card is on the page and has to define itself, so it carries the border. A tile is inside something that already draws the outer chrome, so a border of its own would be a second one and the tonal step does the work instead. The two pair their radius with their padding — a large radius with generous padding, a small one with tight — and mixing them is what makes a card look borrowed from another screen.

Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it.

standalone
Recommended action
Confidence
Highfour of five checks
tile
SupplierRegionSpend
Kestrel ComponentsAPAC$1.24m
Nordwerk GmbHEMEA$860k
table
variantWhen to use
standaloneOn the page background. --surface-depth-0 over --border-default at --radius-lg, with 20px of padding. The default, and what a metric card or a summary on a detail page is.
tileInside a container that has its own surface — a modal, a panel, a drawer, or another card. --surface-depth-1, no visible border, --radius-md, 16px. The step in tone is deliberately faint; the container is what separates it from the page.
tableA container rather than a content card: padding drops to zero so row separators run edge to edge, the content clips to the radius, and the radius is --radius-md because a full-bleed table has nothing between its rules and a wider arc. Give it a CardToolbar and a grid, not the content parts.

status4 values

Status is urgency — what the reader should do — and not health. Today’s critical is next week’s ok, which is the point: a card is a thing to deal with, and things to deal with have urgency rather than a condition. It draws one thing, the dot in the head, and that dot is fixed by the status alone: no variant and no hover state repaints it, and it carries the theme’s status colour as everything else does. Leave status off entirely and no dot renders, which is different from neutral.

Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it.

critical
Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it.

warning
Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it.

ok
Supplier risk
7.2up from 6.4 last week

A third APAC disruption this month, and two known suppliers sit in it.

neutral
statusWhen to use
criticalAct now. Something is demanding attention today.
warningWatch. It could escalate, and it has not yet.
okNo action required. Not the same as “the thing is perfect”.
neutralInformational, no urgency — a card that belongs in a status-bearing group but has nothing to report. Reach for it to keep a row of dots aligned; omit status entirely when the card is not that kind of card at all.