pricing.dot-plan-widgets · Plan widgets

A pricing pattern from Dot Matrix, drawn alone below with this design's tokens and sample copy. Used in this design on: home page, section 8. Give the section root data-pattern="pricing.dot-plan-widgets". A guide only: DESIGN.md and tokens.json are the source of truth.

Rule
Title and line in 1–5 above; two plan widgets in 1–8 (mono plan name, dot-matrix price at step 6, a line and a pill) and one red statement tile with a white pill in 9–12.
Slots
sectionLabel, title, body, plans[2..2], statement, cta
Grid areas
plans 1-8 · statement 9-12 (12-column grid, 1-based inclusive spans)
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 in 1–6, a muted line bottom-aligned in 8–12. Two plan widgets side by side in 1–8: mono plan name and the price in the dot face at step 6 at the top, a muted line and an outlined pill at the bottom (red stays on the statement tile). The red statement widget in 9–12: a statement at step 3 in `onAccent` and an outlined pill. Never three equal plan cards.

Pricing

Engagements

Each engagement starts with a two-week audit: interviews with customers, sales and the people who build the product. The brief writes itself after that.

Sprint

€18k

Two-week positioning sprint with a written brand platform.

Choose Sprint

Rebrand

€85k

Positioning, identity and a launch toolkit over 12 weeks.

Most popular — choose

Most rebrands fail because they start with a logo. Ours start with a sales call recording and a spreadsheet of lost deals.

Start a project
Layout tree (as in design/layout.json)
{
  "pattern": "pricing.dot-plan-widgets",
  "kind": "pricing",
  "grid": {
    "plans": "1-8",
    "statement": "9-12"
  },
  "slots": [
    "sectionLabel",
    "title",
    "body",
    "plans[2..2]",
    "statement",
    "cta"
  ],
  "tree": {
    "el": "box",
    "gap": 8,
    "children": [
      {
        "el": "grid",
        "gap": 6,
        "align": "end",
        "children": [
          {
            "el": "box",
            "span": "1-6",
            "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": 16
              }
            ]
          },
          {
            "el": "text",
            "span": "8-12",
            "color": "textMuted",
            "alignSelf": "end",
            "slot": "body",
            "role": "body",
            "maxCh": 40
          }
        ]
      },
      {
        "el": "grid",
        "gap": 3,
        "align": "stretch",
        "children": [
          {
            "el": "repeat",
            "span": "1-8",
            "slot": "plans",
            "min": 2,
            "max": 2,
            "layout": "grid",
            "cols": 2,
            "phoneCols": 1,
            "gap": 3,
            "of": {
              "el": "box",
              "bg": "surface",
              "gap": 10,
              "pad": [
                6,
                6
              ],
              "justify": "between",
              "radius": "md",
              "children": [
                {
                  "el": "box",
                  "gap": 3,
                  "children": [
                    {
                      "el": "text",
                      "color": "textMuted",
                      "slot": "title",
                      "role": "label",
                      "font": "mono"
                    },
                    {
                      "el": "text",
                      "slot": "number",
                      "role": "number",
                      "step": 6,
                      "weight": 700,
                      "leading": "tight"
                    }
                  ]
                },
                {
                  "el": "box",
                  "gap": 4,
                  "children": [
                    {
                      "el": "text",
                      "color": "textMuted",
                      "slot": "body",
                      "role": "small",
                      "maxCh": 30
                    },
                    {
                      "el": "button",
                      "slot": "cta",
                      "variant": "secondary"
                    }
                  ]
                }
              ]
            }
          },
          {
            "el": "box",
            "span": "9-12",
            "bg": "accent",
            "gap": 8,
            "pad": [
              6,
              6
            ],
            "justify": "between",
            "radius": "md",
            "children": [
              {
                "el": "text",
                "color": "onAccent",
                "slot": "statement",
                "role": "h3",
                "step": 3,
                "weight": 700,
                "leading": "tight",
                "maxCh": 18
              },
              {
                "el": "button",
                "slot": "cta",
                "variant": "secondary",
                "arrow": true
              }
            ]
          }
        ]
      }
    ]
  }
}

Other patterns in this design

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