Table Pattern & Trend Sparkline

Component spec for the updated table pattern, the new ChartSpark trend sparkline component, and their composition inside the UniversalWidgetShell. Derived from Figma file wCdsKYnOx6hCoSOfvMT0Cu, node 3855:13746.

1

Trend Sparkline (ChartSpark)

An inline area-chart sparkline showing directional trend within a table cell.

Variants

VariantPropArea fillStrokeDotBaseline
Positive property1="positive" Gradient — --content-success to transparent #007844 Top-right Bottom (y ≈ 29px)
Negative property1="negative" Gradient — --content-danger to transparent #C10006 Bottom-right Top (y ≈ 9px)

Visual Reference

Positive
endpoint dot 4×4 baseline (dashed)
Negative
baseline (dashed) endpoint dot 4×4
In cell context
cell: 97×48 · pad: 12h 4v

Anatomy

85 × 40px Area fill: gradient to transparent Stroke: 1.5px, --content-success Endpoint dot: 4×4, last data point Baseline: dashed, 1px, rgba(0,0,0,0.10)

Dimensions

PropertyValue
Component size85 × 40px
Cell container97 × 48px (overflow: clip) — sparkline at (0, 0)
Endpoint dot4 × 4px circle, same colour as stroke
BaselineDashed line, full 85px width, 1px stroke, rgba(0,0,0,0.10)

Rendering Notes

Accessibility


2

Updated Table Pattern

Architecture

Table
├── Header Row (Columns)
│   └── Header Cell × n
├── Body Row × n
│   ├── Text Cell (left-aligned — labels)
│   ├── Sparkline Cell (left-aligned — ChartSpark)
│   ├── Numerical Cell (right-aligned — values)
│   ├── Delta Cell (right-aligned — change indicator)
│   └── Numerical Cell (right-aligned — counts)

Header Row

PropertyToken / Value
Backgroundvar(--surface-raised) / #FFFFFF
BorderNone (border-width: 0)
Cell padding12px all sides
FontKlarheit Grotesk Regular (400)
Font size12px
Line height16px
Letter spacing-0.12px
Text colourvar(--content-subtle) / #61605E
AlignmentLeft for text columns, Right for numerical columns

Body Rows

PropertyToken / Value
Backgroundvar(--surface-raised) / #FFFFFF — uniform, no striping
Row border1px solid var(--border-tertiary) / #F2EFEB — top and bottom
Cell padding (standard)12px all sides
Cell padding (sparkline)12px horizontal, 4px vertical
FontKlarheit Grotesk Regular (400)
Font size14px
Line height1.5 (21px)
Letter spacing-0.14px
Text colourvar(--neutral-950) / #070707
Font features'lnum' 1, 'tnum' 1 (lining numerals, tabular figures)

Cell Types

TypeAlignmentContentNotes
Label Left, align-items: flex-end Plain text Product names, categories
Sparkline Left, align-items: flex-start ChartSpark component Reduced vertical padding (4px)
Numerical Right, text-align: right Formatted number/currency font-feature-settings: 'lnum' 1, 'tnum' 1
Delta Right, inner content centred Icon + text See Delta section below

Delta Cell

The delta indicator shows percentage change and absolute value.

PropertyValue
Layoutdisplay: flex, align-items: center, gap: 4px
Icon16 × 16px, Heroicons Mini
Icon (positive)arrow-up-circle, colour var(--content-success) / #007844
Icon (negative)arrow-down-circle, colour var(--content-danger) / #C10006
Text (positive)var(--content-success) / #007844
Text (negative)var(--content-danger) / #C10006
Text format{percentage}% (+/-£{absolute}) e.g. 12.1% (+£2,034)
Font size14px
Line height16px (tighter than standard body)
Letter spacing-0.14px
White spacenowrap

Column Widths (reference — within widget shell)

Figma reference widths inside a ~602px widget. In production, use proportional/flex sizing:

ColumnFigma widthFlex behaviour
Product118pxflex: 0 0 auto, min-width for label
Trend114pxflex: 0 0 114px — fixed for sparkline
Sales value122pxflex: 1 — fills available space
Change~189pxflex: 1 — fills available space
Fees104pxflex: 0 0 auto
When the table is rendered standalone (outside the widget shell), columns should use flex: 1 with appropriate min-widths.

Border Collapse

Cells use margin-right: -1px to collapse shared vertical borders. The last cell in each row omits this negative margin.


3

Changes from Current Table Pattern

These are the breaking changes from the existing table component. Flag these to the dev team as migration work. Both patterns must coexist — consider a variant prop or CSS modifier class (e.g. .table--widget) rather than replacing the base table.
PropertyCurrent (old)NewImpact
Header font weight 700 (Bold) 400 (Regular) Quieter header — hierarchy shifts to content
Header font size 14px 12px Smaller, more compact labels
Header text colour #070707 (Eclipse) #61605E (content-subtle) Muted — header recedes behind data
Header border 1px solid rgba(8,8,8,0.10) none Borderless header row
Header background #FFFCF7 (canvas) #FFFFFF (surface-raised) Matches card surface, not page canvas
Row striping Alternating #FAF7F2 / #FFFCF7 Uniform #FFFFFF No zebra striping — cleaner in widget
Row border colour #E6E3DF #F2EFEB (border-tertiary) Lighter separator
Column sizing Equal flex: 1 Mixed fixed + flex Columns can have explicit widths
Tabular figures Not specified 'lnum' 1, 'tnum' 1 All numerical cells — columns align
New: Sparkline cell n/a ChartSpark in cell New cell type with reduced vertical padding
New: Delta cell n/a Icon + coloured % + absolute Replaces plain numerical for change data

4

Figma References

ComponentNode IDDescription
ChartSpark3855:13748 / 3855:13752Sparkline component variants (positive / negative)
New table3855:13756Table with trend sparkline columns
Widget Shell + table3855:13915Full composition in widget shell
Current/old table3855:14100Existing table pattern for comparison
Open in Figma