What's new Report an issue
GIG Cymru NHS Wales, Digital Health and Care Wales

Link

Text that takes someone somewhere else. A link goes somewhere; a button does something.

In a sentence

The common case, and the one to reach for. An inline link carries no size of its own, so it is the size of the sentence around it and wraps with it.

The record was last updated by another care team. Open the full audit history to see who changed what, and when.

<!-- Inline in a sentence: no size class, so it matches the paragraph. -->
<p>Open the <a class="sr-link" href="/audit">full audit history</a> to see who changed what.</p>

<!-- Standalone, with a decorative leading icon. -->
<a class="sr-link sr-link--lg sr-link--icon" href="/summary.pdf">
  <span class="sr-link__icon" aria-hidden="true"><!-- icon --></span>
  <span>Download the discharge summary</span>
</a>

<!-- New tab: say so in the text, not with the icon. -->
<a class="sr-link" href="https://wcp" target="_blank" rel="noopener noreferrer">
  Open in Welsh Clinical Portal (opens in a new tab)
</a>

Standalone, at three sizes

For a link that is the whole line: a card footer, a table cell, a footnote. Large is body copy, Default suits dense areas, Small is for metadata.

<!-- Inline in a sentence: no size class, so it matches the paragraph. -->
<p>Open the <a class="sr-link" href="/audit">full audit history</a> to see who changed what.</p>

<!-- Standalone, with a decorative leading icon. -->
<a class="sr-link sr-link--lg sr-link--icon" href="/summary.pdf">
  <span class="sr-link__icon" aria-hidden="true"><!-- icon --></span>
  <span>Download the discharge summary</span>
</a>

<!-- New tab: say so in the text, not with the icon. -->
<a class="sr-link" href="https://wcp" target="_blank" rel="noopener noreferrer">
  Open in Welsh Clinical Portal (opens in a new tab)
</a>

A leading icon, and new tabs

The icon is decorative and hidden from assistive technology, so it can never be the only thing saying what happens. That is why "opens in a new tab" is written out rather than drawn — someone who cannot see the tab bar change has been given no warning otherwise.

<!-- Inline in a sentence: no size class, so it matches the paragraph. -->
<p>Open the <a class="sr-link" href="/audit">full audit history</a> to see who changed what.</p>

<!-- Standalone, with a decorative leading icon. -->
<a class="sr-link sr-link--lg sr-link--icon" href="/summary.pdf">
  <span class="sr-link__icon" aria-hidden="true"><!-- icon --></span>
  <span>Download the discharge summary</span>
</a>

<!-- New tab: say so in the text, not with the icon. -->
<a class="sr-link" href="https://wcp" target="_blank" rel="noopener noreferrer">
  Open in Welsh Clinical Portal (opens in a new tab)
</a>

Hover thickens the underline

Hover over any link above. The underline goes from 1px to 3px and the colour does not move.

The Figma set changes hue on hover instead. That colour is a dark navy, which reads at 1.47:1 on the dark page — invisible. No token in the system darkens in light mode and lightens in dark, so hover cannot be a colour change until one exists. Thickening the underline is the GDS treatment and works in both modes today.

Destructive, and disabled

A destructive link opens a flow that removes something. It never performs the act itself — pair it with a confirmation step.

It is light-mode only for now. The destructive red is a fill colour, the sort white text sits on, and as text on the dark page it reads at 2.84:1 against the 4.5:1 it needs. The contrast check records it as an open finding with the two ways out.

A disabled link is usually the wrong pattern. It carries no href, so the browser leaves it out of the tab order. Prefer removing the link and leaving plain text.

<!-- Inline in a sentence: no size class, so it matches the paragraph. -->
<p>Open the <a class="sr-link" href="/audit">full audit history</a> to see who changed what.</p>

<!-- Standalone, with a decorative leading icon. -->
<a class="sr-link sr-link--lg sr-link--icon" href="/summary.pdf">
  <span class="sr-link__icon" aria-hidden="true"><!-- icon --></span>
  <span>Download the discharge summary</span>
</a>

<!-- New tab: say so in the text, not with the icon. -->
<a class="sr-link" href="https://wcp" target="_blank" rel="noopener noreferrer">
  Open in Welsh Clinical Portal (opens in a new tab)
</a>

It is not a button

If it changes state rather than location — saving, deleting, opening a dialog — it is a Button. A screen reader announces "link" and promises navigation. A user told they are about to navigate, who instead deletes a record, was misled by the markup rather than by the label.

Text that takes someone somewhere else, another page, a document, a place further down the one they are on.


When to use

When not to use

How it works

Options

SizeTypeUse when
Inherit (default)Body copyA link inside a sentence. Matches the surrounding text
LargeBody M, 16/24A standalone link at the size of body copy
DefaultBody S, 14/20A standalone link in a dense area, a table cell, a card footer
SmallCaption, 12/16Metadata and footnotes

Type

TypeUse when
DefaultEverything
DestructiveThe link opens a flow that removes something. Pair with a confirmation step, the link opens the flow, it does not perform the act. Light mode only until the colour question below is settled

Do & don't

DoDon't
Name the destination, "Patient summary"Write "Click here", "More", "Read more"
Say "opens in a new tab" in the textRely on an icon to say it
Keep the underlineRemove it and leave colour as the only cue
Use a Button for anything that changes stateStyle a button as a link to make it look quieter
Let a long link wrap with its sentencePut an inline link in a flex container

Accessibility

Content

Known gaps

Related