Skip to main content

  • Foundations
    • Border radius
    • Breakpoints
    • Colours
    • Colour scheme
    • Elevation
    • Focus and outline
    • Sizing and spacing
    • Layout
    • Motion
    • Typography
    • Z-index
  • Elements
    • Buttons
    • Code
    • Icons
    • Figure and caption
    • Forms
    • Links
    • Lists
    • Media
    • Tables
  • Components
    • Accordion
    • Alerts
    • Avatar
    • Blockquote
    • Breadcrumbs
    • Card
    • Chiplets
    • Details and summary
    • Dialog
    • Empty state
    • Stats
    • Global footer
    • Horizontal rule
    • Kanban
    • Key-value list
    • Meter
    • Objects
    • Pagination
    • Polka background
    • Post-it note
    • Progress
    • Speech bubbles
    • Status dot
    • Skeleton
    • Skip link
    • Spinner
    • Toggles
    • Tooltip
    • Webmentions
  • Patterns
    • Article header
    • Author card
    • App list and app sheet
    • Error page
    • Related posts
    • Search results
    • Utilities

John Peart

  • Search
  • Menu
John Peart

Global footer

Site footer with author card and social links.

A single-region footer that sits at the base of every page. Shows the author card on the left and a row of social-media icons on the right. Separated from the page body by a heavy top border.

Structure

A line drawing of John Peart

John Peart

www.johnpe.art

Mastodon logo

Mastodon

BlueSky logo

Bluesky

LinkedIn logo

LinkedIn

Github logo

GitHub

Source

Live markup is at engine/templates/components/footer/global.html. It uses the author card pattern with real social icons.

<footer id="site-footer" class="grid padding-top padding-bottom" style="--mult: 2;">
  <aside id="author-card">
    <div id="author--bio" class="h-card vcard p-author">
      <a class="author--photo author--photo--link" rel="me" href="{{ site.url }}" title="Visit my website" tabindex="-1">
        <img class="u-photo hidden" alt="{{ site.avatar.alt }}" loading="lazy" src="{{ site.url | append: site.avatar.image }}">
      </a>
      <p class="p-name author--name">
        <a rel="author" class="no-underline u-uid" href="{{ site.url }}">
          <strong><span class="p-given-name">John</span> <span class="p-family-name">Peart</span></strong>
        </a>
      </p>
      <p class="author--url link-secondary small-text secondary-text">
        <a href="{{ site.url }}" rel="me" class="link-secondary no-underline u-url">www.johnpe.art</a>
      </p>
    </div>

    {% unless footer.social == false %}
    <div class="author--icons">
      <div class="author-icon mastodon">
        {% include "components/social-icons/social-icon.html", url: site.mastodon.url, icon: "components/icons/mastodon.svg", tooltip: "Follow me on Mastodon", label: "Mastodon" %}
      </div>
      <div class="author-icon bluesky">
        {% include "components/social-icons/social-icon.html", url: site.bluesky.url, icon: "components/icons/bluesky.svg", tooltip: "Follow me on Bluesky", label: "Bluesky" %}
      </div>
      <div class="author-icon linkedin">
        {% include "components/social-icons/social-icon.html", url: site.linkedin.url, icon: "components/icons/linkedin.svg", tooltip: "Connect with me on LinkedIn", label: "LinkedIn" %}
      </div>
      <div class="author-icon github">
        {% include "components/social-icons/social-icon.html", url: site.github.url, icon: "components/icons/github.svg", tooltip: "Find me on GitHub", label: "GitHub" %}
      </div>
    </div>
    {% endunless %}
  </aside>
</footer>

Responsive behaviour

On mobile the icon row stacks below the author card. At the 700px breakpoint it moves to the right of the card in a two-column grid.

Accessibility

Each social link has an aria-label. The footer is wrapped in <footer> so it's announced as a landmark region.

A line drawing of John Peart

John Peart

www.johnpe.art

Mastodon logo

Mastodon

BlueSky logo

Bluesky

LinkedIn logo

LinkedIn

Github logo

GitHub