stats.dot-counter-tiles · Counter tiles

A stats pattern from Dot Matrix, drawn alone below with this design's tokens and sample copy. Used in this design on: home page, section 4; about page, section 2. Give the section root data-pattern="stats.dot-counter-tiles". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
Four reading tiles in a row, each a mono label at the top and a dot-matrix number at step 7 with a muted note at the bottom; the intro sits above in 1–6 with the title.
Slots
sectionLabel, title, stats[4..4]
Tokens
bg #000000 · text #E6E6E6 · heading #FFFFFF · accent #D71921 · accent2 #FFFFFF · Doto / Space Grotesk · radius 24px · space unit 4px (full list in design/tokens.json)

Pattern notes

  • Signal label and title at step 5 (≤20 ch) above four reading widgets in a row (two per row on phones): a mono label at the top, the dot-matrix number at step 7 and a muted note at the bottom. No red tile here; the numbers carry it.

By the numbers

Twelve years in numbers

launches shipped

140+

Since 2014

years independent

12

2025

clients return

9 of 10

Audited

average lift in demo requests

31%

Last 12 months

Layout tree (as in design/layout.json)
{
  "pattern": "stats.dot-counter-tiles",
  "kind": "stats",
  "slots": [
    "sectionLabel",
    "title",
    "stats[4..4]"
  ],
  "tree": {
    "el": "box",
    "gap": 8,
    "children": [
      {
        "el": "box",
        "gap": 4,
        "children": [
          {
            "el": "box",
            "alignSelf": "start",
            "dir": "row",
            "pad": [
              1,
              4
            ],
            "align": "center",
            "border": "all",
            "radius": "full",
            "children": [
              {
                "el": "text",
                "color": "text",
                "slot": "sectionLabel",
                "role": "label",
                "font": "mono"
              }
            ]
          },
          {
            "el": "text",
            "slot": "title",
            "role": "h2",
            "step": 5,
            "weight": 700,
            "leading": "tight",
            "maxCh": 20
          }
        ]
      },
      {
        "el": "repeat",
        "slot": "stats",
        "min": 4,
        "max": 4,
        "layout": "grid",
        "cols": 4,
        "phoneCols": 2,
        "gap": 3,
        "of": {
          "el": "box",
          "bg": "surface",
          "gap": 10,
          "pad": [
            6,
            5
          ],
          "justify": "between",
          "radius": "md",
          "children": [
            {
              "el": "text",
              "color": "textMuted",
              "slot": "title",
              "role": "label",
              "font": "mono"
            },
            {
              "el": "box",
              "gap": 2,
              "children": [
                {
                  "el": "text",
                  "slot": "number",
                  "role": "number",
                  "step": 7,
                  "weight": 700,
                  "leading": "tight"
                },
                {
                  "el": "text",
                  "color": "textMuted",
                  "slot": "meta",
                  "role": "small"
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
Component example: reference/stats.dot-counter-tiles.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>stats.dot-counter-tiles — Dot Matrix</title>
<link rel="stylesheet" href="base.css">
<style>
  section { padding: var(--section) 0; display: grid; gap: 32px; }
  header { display: grid; gap: 16px; }
  header h2 { font-size: var(--step-5); max-width: 20ch; }
  .tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap); }
  .tiles .widget { gap: 40px; }
  .tiles .dot { font-size: var(--step-7); display: block; margin-bottom: 8px; }
  @media (max-width: 640px) { .tiles { grid-template-columns: 1fr 1fr; } .tiles .dot { font-size: 48px; } }
</style>
</head>
<body>
<section class="wrap">
  <header><span class="chip">By the numbers</span><h2>One year of glyphs</h2></header>
  <div class="tiles">
    <div class="widget"><span class="mono">Phones shipped</span><div><span class="dot">2.4M</span><span class="small muted">Since July 2025</span></div></div>
    <div class="widget"><span class="mono">Glyph patterns</span><div><span class="dot">418</span><span class="small muted">Made by the community</span></div></div>
    <div class="widget"><span class="mono">Battery life</span><div><span class="dot">2d</span><span class="small muted">Typical use</span></div></div>
    <div class="widget"><span class="mono">Updates</span><div><span class="dot">5y</span><span class="small muted">Guaranteed</span></div></div>
  </div>
</section>
</body>
</html>

Other patterns in this design

Whole design · Spec bundle (JSON) · On the style page