Card links

Use card links to help users reach the next stage of their NHS App journey.

When to use

Use card links to take users:

  • to the start of an NHS App service
  • deeper into an area of the app

When not to use

Do not place card links in the middle of paragraph text.

How to use

The whole card should always act as a single, selectable link.

Use the variation below that fits best with the context.

This is our preferred style. A concise phrase explains where the link goes. It can be read quickly because of the short amount of text.

On pages deeper in the structure of the NHS App, users may need more details to understand where links go. In this case, you can use paragraph text below the heading to give more information.

Only use this variation if you have found a user need for more detailed links on a particular page.

Using icons

Icons may help users to understand the meaning of a card link. We currently only use this variation for “Switch profiles” and “Messages” links on the homepage.

Using badges

Use badges to alert users to new, important information that sits beyond a card link. This could include unread messages or new appointment details.

Multiple card links placed together must be marked up as lists in the HTML code. This helps screen reader users to navigate the content, for example by letting them know how many items there are in the list.

<ol class="nhsapp-cards nhsapp-cards--stacked">
  <li class="nhsapp-card">
    <div class="nhsapp-card__container">
      <div class="nhsapp-card__content">
        <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state">
          GP health record
        </a>
      </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li>

<li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> View and manage prescriptions </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li>

<li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Upcoming and past appointments </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li> </ol>


{% from "nhsapp/components/card/macro.njk" import nhsappCardGroup %}
{% from "nhsapp/components/card/macro.njk" import nhsappCard %}

{{ nhsappCardGroup({
  stacked: true,
  cards: [
    {
      title: 'GP health record',
      href: '#'
    },
    {
      title: 'View and manage prescriptions',
      href: '#'
    },
    {
      title: 'Upcoming and past appointments',
      href: '#'
    }
  ]
}) }}

To use the component in your design, add the NHS App Figma library to your working files, and navigate using the components tab.

View component in Figma

To use the component in your Vue application, install the NHS App Vue Component Library and import the component.

View component in Vue

If a page has a long list of card links, consider breaking them up using headings. This makes the information easier to digest and can help screen reader users who may navigate pages by headings.

<div class="nhsapp-section-heading">
  <h2 class="nhsuk-heading-s">Your GP services</h2>
</div>

<ol class="nhsapp-cards nhsapp-cards--stacked"> <li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Request repeat prescriptions </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li>

<li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Contact your GP surgery for a document or update </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li>

<li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Check for available GP appointments </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li> </ol>

<div class="nhsapp-section-heading"> <h2 class="nhsuk-heading-s">Other NHS services</h2> </div>

<ol class="nhsapp-cards nhsapp-cards--stacked"> <li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Book </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li>

<li class="nhsapp-card"> <div class="nhsapp-card__container"> <div class="nhsapp-card__content"> <a href="#" class="nhsapp-card__link nhsuk-link--no-visited-state"> Request prescriptions </a> </div>

<svg class="nhsapp-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" height="2em" width="2em" viewBox="0 0 24 24" > <path d="M8.82 19.11a.97.97 0 0 1-.72-.31.996.996 0 0 1 .03-1.41l5.61-5.38-5.6-5.25c-.4-.38-.42-1.01-.05-1.41.38-.4 1.01-.42 1.41-.05l6.37 5.97c.2.19.31.45.32.72s-.11.54-.31.73l-6.37 6.11c-.19.19-.44.28-.69.28Z" /> </svg> </div> </li> </ol>


{% from "nhsapp/components/card/macro.njk" import nhsappCardGroup %}
{% from "nhsapp/components/card/macro.njk" import nhsappCard %}
{% from "nhsapp/styles/section-heading/macro.njk" import nhsappSectionHeading %}



{{ nhsappSectionHeading({
  headingText: "Your GP services"
}) }}

{{ nhsappCardGroup({
  stacked: true,
  cards: [
    {
      title: 'Request repeat prescriptions',
      href: '#'
    },
    {
      title: 'Contact your GP surgery for a document or update',
      href: '#'
    },
    {
      title: 'Check for available GP appointments',
      href: '#'
    }
  ]
}) }}

{{ nhsappSectionHeading({
  headingText: "Other NHS services"
}) }}

{{ nhsappCardGroup({
  stacked: true,
  cards: [
    {
      title: 'Book',
      href: '#'
    },
    {
      title: 'Request prescriptions',
      href: '#'
    }
  ]
}) }}

To use the component in your design, add the NHS App Figma library to your working files, and navigate using the components tab.

View component in Figma

To use the component in your Vue application, install the NHS App Vue Component Library and import the component.

View component in Vue

Content guidance

Aim to use active phrasing for card link text. This means starting the link text with a verb. For example: "Request repeat prescriptions" and "Check for available GP appointments". This follows content guidance on links and helps users to understand the action they can take.

However, you may find reasons to vary this to fit with the context. On the "Your health" hub, we mainly use noun phrases (such as "GP health record") for brevity and to avoid multiple links starting with the same verb.

In usability testing, we did not see evidence of this mixture of phrasing causing problems for users. We also noted that GOV.UK also vary link phrasing in a similar way. However, more research on link phrasing may be helpful to validate the best approach.

Research

In usability testing, people successfully navigated the NHS App and completed a range of tasks using short card links. They understood the meaning of the links despite the short amount of text.

In some usability testing involving card links with paragraph text, users have overlooked the paragraph text. However, paragraph text has been found to help users differentiate inboxes on the “Messages” hub.

The icons used on homepage card links were well understood in our user research. People were able to recognise the images and associate them with the link destination.

Knowledge gaps

As noted in the content guidance section above, more research into link phrasing may help us to understand the best way to word NHS App links.

Help improve this component

If you have used or researched this component, please let us know what you found so we can make it better for everyone.

Discuss 'Card links' on GitHub where you can share anything you think might be useful.

You can also share feedback with us on Slack.