Pagination

Pagination is used to help split up long sets of data or content into shorter pieces, so as to make it easier for users to consume information.

Standard pagination

Pagination consists of buttons to navigate through content, along with an inline form (input field, submit button) to enable users to navigate to specific pages by number.

Default pagination

HTML code snippet

<div id="pagination_content"></div>

<!-- Paginated content here -->

<nav class="m-pagination" role="navigation" aria-label="Pagination">
    <a class="a-btn
              m-pagination_btn-prev"
      href="?page=21#pagination_content">
        <span class="a-btn_icon a-btn_icon__on-left">{% include icons/left.svg %}</span>
        Newer
    </a>

    <a class="a-btn
              m-pagination_btn-next"
      href="?page=23#pagination_content">Older
        <span class="a-btn_icon a-btn_icon__on-right">{% include icons/right.svg %}</span>

    </a>

    <form class="m-pagination_form"
          action="#pagination_content">
        <label class="m-pagination_label"
              for="m-pagination_current-page">
            Page
            <span class="u-visually-hidden">
                number 22 out
            </span>
            <input class="m-pagination_current-page"
                  id="m-pagination_current-page-default"
                  name="page"
                  type="number"
                  min="1"
                  max="149"
                  pattern="[0-9]*"
                  inputmode="numeric"
                  value="22">
            of 149
        </label>
        <button class="a-btn
                      a-btn__link
                      m-pagination_btn-submit"
                id="m-pagination_btn-submit-default"
                type="submit">Go</button>
    </form>
</nav>

Implementation details

To enable the component to jump directly to the paginated content, include an id on a wrapper of the paginated content (or an element directly above it), e.g., id="pagination_content".

First and last pages

When on the first or last page of paginated content, be sure to disable the appropriate buttons by adding the a_btn__disabled modifier and removing their href attribute.

HTML code snippet

<nav class="m-pagination" role="navigation" aria-label="Pagination">
<a class="a-btn  a-btn__disabled m-pagination_btn-prev">
<span class="a-btn_icon a-btn_icon__on-left">{% include icons/left.svg %}</span>        Newer </a>

<a class="a-btn m-pagination_btn-next" href="?page=2#pagination_content">        Older
<span class="a-btn_icon a-btn_icon__on-right">{% include icons/right.svg %}</span>
</a>

<form class="m-pagination_form" action="#pagination_content">
  <label class="m-pagination_label" for="m-pagination_current-page">  Page
    <span class="u-visually-hidden">number 1 out</span>
    <input class="m-pagination_current-page"
      id="m-pagination_current-page-first-last"
      name="page"
      type="number"
      min="1"
      max="149"
      pattern="[0-9]*"
      inputmode="numeric" value="1">
   of 149
  </label>
<button class="a-btn a-btn__link m-pagination_btn-submit" id="m-pagination_btn-submit-first-last" type="submit">Go</button> </form>
</nav>