Dashboard
When to use this component
Use the dashboard component to display summary totals or counts in a visually prominent way, particularly when you need to:
- show key metrics at a glance
- indicate status alongside a count (such as "action required" or "complete")
- provide quick navigation to filtered views of data
When not to use this component
Avoid using the dashboard component if there's no need to present summary totals or a total count.
If dealing with a limited number of records, it's advisable to use the table component upfront, which can display a list of records alongside status tags for each entry.
How it works
The dashboard component consists of tiles that display a number and label, optionally with a status indicator below. Each tile can be a link to navigate users to a filtered view of the data.
The component uses fluid typography with clamp() to ensure numbers scale appropriately across different screen sizes.
Variants
The dashboard component offers several variants:
- With status: Includes a status bar below the main tile showing state (passing/failing)
- Dark: A standalone dark tile without a status bar, with white text on black background
- Light: A standalone light tile without a status bar, with black text on white background and a border
- Status with link: The status bar itself can contain a link for additional navigation
Status indicators
When using the "with status" variant, you can indicate different states:
- Passing (green): Use
dfe-dashboard-statusfor positive states like "Active", "Complete", or "No action required" - Failing (red): Use
dfe-dashboard-status-failingfor states requiring attention like "Action required"
Size options
The dashboard number can be displayed in three sizes:
- Default: Use
dfe-dashboardfor the largest display (32px base) - Smaller: Use
dfe-dashboard-smallerfor medium display (24px base) - Smallest: Use
dfe-dashboard-smallestfor compact display (18px base)
All sizes use fluid typography and will scale based on the container width.
HTML Examples
Select the appropriate example below and directly integrate the HTML into your web template. You can customise these examples to align with your specific requirements. Refer to the layouts section for further guidance on structuring your web template.
Dashboard with status (mixed states)
Shows a three-column dashboard with both passing and failing status indicators.
Dashboard with status
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">12</span>
<span class="dfe-dashboard-label">pending requests</span>
</span>
</a>
<span class="dfe-dashboard-status-failing">
Action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">48</span>
<span class="dfe-dashboard-label">current members</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">requests processed</span>
</span>
</a>
<span class="dfe-dashboard-status">
All time
</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">12</span>
<span class="dfe-dashboard-label">pending requests</span>
</span>
</a>
<span class="dfe-dashboard-status-failing">
Action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">48</span>
<span class="dfe-dashboard-label">current members</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">requests processed</span>
</span>
</a>
<span class="dfe-dashboard-status">
All time
</span>
</span>
</div>
</div>
{% endblock %}
Dashboard with status (all passing)
Shows a three-column dashboard where all items have a passing (green) status.
Dashboard all passing
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">0</span>
<span class="dfe-dashboard-label">pending requests</span>
</span>
</a>
<span class="dfe-dashboard-status">
No action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">24</span>
<span class="dfe-dashboard-label">active users</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">completed tasks</span>
</span>
</a>
<span class="dfe-dashboard-status">
Complete
</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">0</span>
<span class="dfe-dashboard-label">pending requests</span>
</span>
</a>
<span class="dfe-dashboard-status">
No action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">24</span>
<span class="dfe-dashboard-label">active users</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">completed tasks</span>
</span>
</a>
<span class="dfe-dashboard-status">
Complete
</span>
</span>
</div>
</div>
{% endblock %}
Two column layout
A two-column dashboard layout using govuk-grid-column-one-half.
Dashboard two column
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-half">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">5</span>
<span class="dfe-dashboard-label">incomplete applications</span>
</span>
</a>
<span class="dfe-dashboard-status-failing">
Action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-half">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">complete applications</span>
</span>
</a>
<span class="dfe-dashboard-status">
Complete
</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-half">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">5</span>
<span class="dfe-dashboard-label">incomplete applications</span>
</span>
</a>
<span class="dfe-dashboard-status-failing">
Action required
</span>
</span>
</div>
<div class="govuk-grid-column-one-half">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">complete applications</span>
</span>
</a>
<span class="dfe-dashboard-status">
Complete
</span>
</span>
</div>
</div>
{% endblock %}
Dark variant (without status)
A standalone dark dashboard tile without a status bar, useful for simple count displays.
Dashboard dark
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">total applications</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">approved</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">67</span>
<span class="dfe-dashboard-label">pending review</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">total applications</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">approved</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-dark">
<span class="dfe-dashboard-number">67</span>
<span class="dfe-dashboard-label">pending review</span>
</span>
</div>
</div>
{% endblock %}
Light variant (without status)
A standalone light dashboard tile with a border, without a status bar. Use when you need a lighter appearance that fits better on coloured backgrounds.
Dashboard light
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">total applications</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">approved</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">67</span>
<span class="dfe-dashboard-label">pending review</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">156</span>
<span class="dfe-dashboard-label">total applications</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">89</span>
<span class="dfe-dashboard-label">approved</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-light">
<span class="dfe-dashboard-number">67</span>
<span class="dfe-dashboard-label">pending review</span>
</span>
</div>
</div>
{% endblock %}
Size variants
Shows the three available sizes: default, smaller, and smallest.
Dashboard sizes
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">default size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">smaller size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smallest">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">smallest size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">default size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">smaller size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smallest">
<span class="dfe-dashboard-number">42</span>
<span class="dfe-dashboard-label">smallest size</span>
</span>
</a>
<span class="dfe-dashboard-status">
Active
</span>
</span>
</div>
</div>
{% endblock %}
Status bar with link
The status bar can contain a link for additional navigation options.
Dashboard status with link
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">8</span>
<span class="dfe-dashboard-label">pending reviews</span>
</span>
</a>
<span class="dfe-dashboard-status dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">View all pending</a>
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">24</span>
<span class="dfe-dashboard-label">approved items</span>
</span>
</a>
<span class="dfe-dashboard-status dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">View approved</a>
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">3</span>
<span class="dfe-dashboard-label">rejected items</span>
</span>
</a>
<span class="dfe-dashboard-status-failing dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">Review rejected</a>
</span>
</span>
</div>
</div>
{% extends 'DfE/Layouts/2ColumnWideLeft' %}
{% block title %}{% endblock %}
{% block main %}
{% unless user %}
<script>
window.location.href="{{ sitemarkers['DfE/Error/AccessDenied'].url }}"
</script>
{% endunless %}
<div class="govuk-grid-row">
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">8</span>
<span class="dfe-dashboard-label">pending reviews</span>
</span>
</a>
<span class="dfe-dashboard-status dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">View all pending</a>
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">24</span>
<span class="dfe-dashboard-label">approved items</span>
</span>
</a>
<span class="dfe-dashboard-status dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">View approved</a>
</span>
</span>
</div>
<div class="govuk-grid-column-one-third">
<span class="dfe-dashboard-with-status">
<a class="govuk-link govuk-link--inverse dfe-dashboard-link" href="#">
<span class="dfe-dashboard-smaller">
<span class="dfe-dashboard-number">3</span>
<span class="dfe-dashboard-label">rejected items</span>
</span>
</a>
<span class="dfe-dashboard-status-failing dfe-dashboard-status--with-link">
<a class="govuk-link govuk-link--inverse" href="#">Review rejected</a>
</span>
</span>
</div>
</div>
{% endblock %}
If you would like any additional advice or guidance with using these examples on Power Pages, please contact the Solutions Delivery Team.