Skip to content

SummaryList ​

Labelled values: a record's details, figures in a summary, or answers to check before submitting.

Open in Storybook to try every prop.

When to use ​

Use a SummaryList forUse instead
One record's details ("Email: …", "Year group: …")Many records (Table)
Checking answers before submitting, with a Change per rowEditing (form fields)
A few figures in a summary card (compact)One headline number (StatTile)

Layouts ​

LayoutLooks likeUse for
rows (default)Label left, value beside it, a line between rows. Label above value when the container is under 384px.Details, check your answers
compactLabel left, value right-aligned and bold, no linesFigures in a sidebar or summary card
stackedLabel above value; 1 column, 2 from 384px, 3 from 672px (container width)Lots of short facts

Anatomy ​

PartRequiredNotes
labelYesBlack 65%.
valueYesText, or the value slot (Badge, link). Empty shows "—".
descriptionNoGrey text under the value.
actionNoSlot, e.g. a "Change" button, at the end of the row.

Properties ​

PropertyTypeDefaultDescription
items{ label, value?, description?, emphasis? }[]—Required. emphasis makes the value bold, e.g. a total.
layoutrows | compact | stackedrows
labelWidthsm | md | lgmdLabel column in rows: 128 / 192 / 256px.
emptyLabelstring"Not set"What screen readers hear for an empty value.

Sizes ​

PartValue
Text14px / 20px
rows12px above and below each row; the first and last flush with the container; 16px between columns; 4px label to value when stacked
compact8px between rows, 16px between columns
stacked4px label to value; 16px between rows, 24px between columns
Lines (rows)1px black 15%
Empty value"—", black 40%

Accessibility ​

PartAnnounced as
ListDescription list (<dl>), each label a term and each value its definition
PairsEach pair is wrapped together, so they're read together
Empty value"Not set" (the dash is hidden)
Change actionAdd the row to the button's name, e.g. Change<span class="sr-only"> email</span>

Platform adaptation ​

PlatformImplementationDifferences
Web / desktop (Vue)SummaryList.vue—
iOS (SwiftUI)—LabeledContent rows in a Form or List section.
Android (Compose)—ListItem with overlineContent (label) and headlineContent (value).

Tokens used ​

TokenUsed for
color blackvalues
color black (65%)labels, descriptions
color black (40%)empty dash
color black (15%)lines

Do / Don't ​

DoDon't
Keep labels short and values scannablePut paragraphs in values
Use compact for numbers, so they line up on the rightUse compact for long text values
Say which row a Change button is forHave several "Change" buttons with the same name

Released under the PolyForm Noncommercial License 1.0.0.