Retirement drawdown card
Investable wrappers stacked over the plan horizon against the pot each retirement date demands, with the shortfall at the target age.
Can you retire at 50?
Your forecast's investable assets against the line each date demands
Projected investable assets at 50
£1.2m
You need £2m to retire at 50
Cash
£300k
ISA
£200k
GIA
£510k
Pension
£170k
By 50 you're £820k short of the pots. Most of the shortfall is an empty pension and cash sitting idle, the levers below put it to work.
<RetirementDrawdownCard data={drawdown} title="Can you retire at 50?" />Usage
import { RetirementDrawdownCard, type RetirementDrawdownData } from "@reva/ui";Renders the retirement drawdown tool output (wiring lands with the follow-up agent tool). The series list names each investable wrapper in stack order (bottom to top), each point carries the wrapper balances for a date as decimal strings, and the optional required value on a point draws the dashed "pot each date demands" line. When a target is set, the card adds the headline stat, the short or surplus badge, the amber target tick and a bracket on the chart marking the gap between the projected stack and the required pot at that date.
Pass data with a stable reference (module scope, state or useMemo). The x-axis is categorical, so the target and event years must land on plotted years — a year between points renders no marker, though the stat block still renders from the wire numbers. When every point carries an age, the x-axis plots age instead of the calendar year.
Examples
Shortfall at the target age
The full state: four wrappers stacked, the required line climbing to the target then holding flat, the gap bracket reading short, an event flag on the business sale and a narrative footer. Hover the chart for the per-wrapper values, total, required pot and gap at any date.
Can you retire at 50?
Your forecast's investable assets against the line each date demands
Projected investable assets at 50
£1.2m
You need £2m to retire at 50
Cash
£300k
ISA
£200k
GIA
£510k
Pension
£170k
By 50 you're £820k short of the pots. Most of the shortfall is an empty pension and cash sitting idle, the levers below put it to work.
<RetirementDrawdownCarddata={{ reporting_currency: "GBP", series: [ { key: "cash", label: "Cash" }, { key: "isa", label: "ISA" }, { key: "gia", label: "GIA" }, { key: "pension", label: "Pension" }, ], points, // one per year, each with assets keyed by series and a required value target: { year: 2036, age: 50, required: "2000000", projected: "1180000" }, events: [{ year: 2035, label: "Business sale", sublabel: "GIA" }],}}title="Can you retire at 50?"subtitle="Your forecast's investable assets against the line each date demands"narrative="By 50 you're £820k short of the pots."/>Surplus
When the projected stack clears the required pot, the badge and the bracket flip constructive.
Can you retire at 50?
Your forecast's investable assets against the line each date demands
Projected investable assets at 50
£1.2m
You need £900k to retire at 50
Cash
£300k
ISA
£200k
GIA
£510k
Pension
£170k
<RetirementDrawdownCard data={surplusDrawdown} title="Can you retire at 50?" />Minimal
Two wrappers over a short horizon, no events and no narrative — the flag headroom collapses and the default title reads through.
Your retirement drawdown
Investable assets against the pot each date demands
Projected investable assets at 50
£370k
You need £500k to retire at 50
ISA
£200k
Pension
£170k
<RetirementDrawdownCard data={minimalDrawdown} />Without a target
No target and no required values: the stat block, badge, bracket and dashed line all skip, and the legend reads at the end of the horizon.
Your retirement drawdown
Investable assets against the pot each date demands
Cash
£328k
ISA
£256k
GIA
£594k
Pension
£268k
<RetirementDrawdownCard data={wrappersOnly} />Props
| Prop | Type | Default | Description |
|---|---|---|---|
data | RetirementDrawdownData | — | The card payload. Stable reference required. |
title | string | "Your retirement drawdown" | Card title. |
subtitle | string | "Investable assets against the pot each date demands" | Muted line under the title. |
narrative | string | — | Agent-authored sentence rendered in a highlighted footer panel. |
The data fields:
| Field | Type | Description |
|---|---|---|
reporting_currency | string | ISO currency for every value (e.g. "GBP"). |
series | RetirementDrawdownSeries[] | The investable wrappers in stack order, bottom to top: key, label. |
points | RetirementDrawdownPoint[] | One per date: year, optional age, assets (decimal strings keyed by series key, missing key plots as zero), optional required. |
target | RetirementDrawdownTarget | Optional target: year, optional age, required, projected (both decimal strings). Drives the stat block, badge, bracket and amber tick. |
events | RetirementDrawdownEvent[] | Optional one-off markers: year, label, optional sublabel. |
Series colours assign positionally over the chart role token families — neutral (brass), positive (fern), primary (amber), accent (gold), negative (mulberry) — so the canonical wrapper order lands Cash on brass, ISA on fern, GIA on amber and Pension on gold, and every hue flips with colour mode.