contact.dot-contact-widgets · Contact widgets

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

Rule
A form tile in 1–7 over two rows (title, line, name/email/message); an email widget in 8–12, then a phone widget in 8–10 and a red hours dot widget in 11–12.
Slots
sectionLabel, title, body, contact, email, phone, hours
Grid areas
form 1-7 · email 8-12 · phone 8-10 · hours 11-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

  • A form widget in 1–7 over two rows: pill label, title at step 5, a muted line and the name / email / message form with a pill submit. An email widget in 8–12 (ring indicator, the address at step 3 in the body face), then a phone widget in 8–10 (dot indicator, the number) and a small red hours widget in 11–12 (white dot, the hours in `onAccent`).

Contact

Start a conversation

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.

Name
Your name
Email
you@example.com
Message
Tell us a little about your project…
Send message

hello@northfold.com

+351 21 340 5512

Studio open Mon–Thu, 9:30–18:00

Layout tree (as in design/layout.json)
{
  "pattern": "contact.dot-contact-widgets",
  "kind": "contact",
  "grid": {
    "form": "1-7",
    "email": "8-12",
    "phone": "8-10",
    "hours": "11-12"
  },
  "slots": [
    "sectionLabel",
    "title",
    "body",
    "contact",
    "email",
    "phone",
    "hours"
  ],
  "tree": {
    "el": "grid",
    "gap": 3,
    "rowGap": 3,
    "align": "stretch",
    "children": [
      {
        "el": "box",
        "span": "1-7",
        "rowSpan": "1-2",
        "bg": "surface",
        "gap": 5,
        "pad": [
          8,
          6
        ],
        "justify": "between",
        "radius": "md",
        "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": 14
          },
          {
            "el": "text",
            "color": "textMuted",
            "slot": "body",
            "role": "body",
            "maxCh": 40
          },
          {
            "el": "form",
            "slot": "contact",
            "fields": [
              "name",
              "email",
              "message"
            ]
          }
        ]
      },
      {
        "el": "box",
        "span": "8-12",
        "rowSpan": "1-1",
        "bg": "surfaceAlt",
        "gap": 8,
        "pad": [
          6,
          6
        ],
        "justify": "between",
        "radius": "md",
        "children": [
          {
            "el": "shape",
            "kind": "ring",
            "size": "sm",
            "fill": "heading"
          },
          {
            "el": "text",
            "slot": "email",
            "role": "h3",
            "weight": 700,
            "font": "body"
          }
        ]
      },
      {
        "el": "box",
        "span": "8-10",
        "rowSpan": "2-2",
        "bg": "surface",
        "gap": 8,
        "pad": [
          5,
          5
        ],
        "justify": "between",
        "radius": "md",
        "children": [
          {
            "el": "shape",
            "kind": "circle",
            "size": "sm",
            "fill": "heading"
          },
          {
            "el": "text",
            "slot": "phone",
            "role": "h4",
            "weight": 700,
            "font": "body"
          }
        ]
      },
      {
        "el": "box",
        "span": "11-12",
        "rowSpan": "2-2",
        "bg": "accent",
        "gap": 6,
        "pad": [
          5,
          5
        ],
        "justify": "between",
        "radius": "md",
        "children": [
          {
            "el": "shape",
            "kind": "circle",
            "size": "sm",
            "fill": "onAccent"
          },
          {
            "el": "text",
            "color": "onAccent",
            "slot": "hours",
            "role": "small"
          }
        ]
      }
    ]
  }
}

Other patterns in this design

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