Link

Inline navigation that reads as text and behaves like a promise.

v1.0.0·Updated Jul 8, 2026 · 10:45
Live Demo — Fully Interactive
Reads as text, underlined so it can be found

Optimism is a stance, not a mood. Read the design principles to see how it shapes every decision, or skip to the changelog for the quiet, secondary trail.

Configuration
Tone
Kind
Text
<Link standalone>Browse components</Link>
Behavior — The Engineering Contract
PropTypeNotes
hrefstringDestination; renders a real anchor
tonedefault · quietWarm primary, or grey secondary trail
standalonebooleanDrops the underline, adds a nudging arrow
externalbooleanAdds the glyph, target and rel="noreferrer noopener"
asElementTypeSwap in a router Link for client navigation

A link navigates; it never performs an action. If a click submits, deletes or toggles, use a Button styled as a link, not a link.

Anatomy
Browse components
1LabelThe destination named as text, warm or quiet.
2AffordanceUnderline inline, or a trailing arrow when standalone.
3Focus ring3px warm ring on focus-visible, keyboard only.
Do's and Don'ts
✓ Do
See the colour system for the full scale.

Wrap the words that name the destination. The link text is the label.

✕ Don't
For the colour system, click here.

Don't link "click here". It fails screen readers and says nothing scanned alone.

✓ Do
Open in Figma

Mark links that leave the site so a new tab is never a surprise.

✕ Don't
Learn more

Don't dress navigation as a solid button. A link goes; a button does.

In context: Examples
A · In prose
Every token is documented. Start with the foundations, then the components.

Inline links stay in the reading flow; quiet tone marks the lesser of two.

B · Card footer

A standalone link ends a card, its arrow pointing to what is next.

C · Footer column
PrivacyTermsStatus

Quiet links stack in footers where they support, not lead.

Measurements & Tokens
TokenValueRole
--link-color#FF9D45Default inline link text
--link-underlinergba(255,122,0,.35)Resting underline, solid on hover
--link-quiet#CFD3DASecondary tone text
--link-quiet-line#333336Quiet underline
--link-arrow3px nudge · .18sStandalone arrow travel on hover
--link-focusrgba(255,122,0,.32)3px focus-visible ring
Code
<a href="/principles" class="o-link">design principles</a>
<a href="/changelog" class="o-link o-link--quiet">changelog</a>

<a href="/components" class="o-link o-link--standalone">
  Browse all components
  <svg class="o-link__arrow">…</svg>
</a>

<a href="https://figma.com" class="o-link o-link--external"
   target="_blank" rel="noreferrer noopener">Figma file</a>