Skip to main content
Context GrammarDesign for context-aware AI

Intent First Design System · v2

Change one token. Every page follows.

This is the design system behind intentfirst.ai, made for interfaces that change with context. Colour, type and motion live as tokens in one file, so a single edit reaches every page.

Try it: switch the heading font

type roles
5
motion durations
5
signal colour
1
languages
2

01Principles

Four promises to the reader

Each one is a rule the code keeps, not a mood.

  1. 01

    Friendly, not scary

    Warm paper, plain words, square corners. The chips you can tap are the one rounded exception.

  2. 02

    Simple, no confusion

    Five type roles and ten named sizes — one short list that people and agents both pick from.

    Aatext-body 17Aatext-lead 21Aatext-h2 41
  3. 03

    Joyful to read

    A 17px body token with room between the lines, and a reading serif for the moments when someone speaks.

    “The usual, please.”
  4. 04

    Modern, of the future

    Taps answer in 100–240ms. Things arrive quickly and settle softly.

    --dur-instant 100ms · --dur-base 240ms

02The signature rule

People in bold brush, systems in hairline.

Illustrations carry the human situation: bold ink and one red accent. Diagrams carry the system: even 1px lines. You always know which one you are looking at.

A diner points between two dishes on the menu while the host waits, without taking the order.
Bold brush — a person deciding
Hairline — the six stages of Context Grammar

03Type in roles

Five roles. One switch.

Text asks for a role, never a font. Switch the display family and every heading on this page changes — the one at the top too.

Display family
font-displayHeadings · Funnel Display
Context changes the answer.
font-bodyReading · Funnel Sans
A good host remembers what you like, and still asks before choosing for you.
font-labelButtons, navigation, labels · Funnel Sans
Next step · 3 of 6
font-voiceWhat a person says · Newsreader italic
“The usual, please.”
font-dataNumbers and code · JetBrains Mono
--dur-base 240ms · 0123456789

In Japanese, every sans role switches to M PLUS 2 and the voice to Noto Serif JP — upright, never slanted.

See every type role in the catalogue →

04Ink, paper, one signal

Light and dark trade places. Red stays one signal.

Dark mode swaps ink and paper; nothing is recoloured by hand. Red marks one thing per screen — the current decision, the main action, or the one place to look. Pick a decision and watch the dot move.

Light

What would you like tonight?

  • The usual
  • Something new
  • Ask me later
--paper
#F8F7F2
--ink
#15171C
--spark
#E1402F

Choose the current decision

Current decision: The usual

On both grounds, the dot is the same --spark red.

See every colour in the catalogue →

05Motion grammar

Crisp entry, soft landing.

Five duration tokens for interface feedback, from a 100ms press to a 560ms entrance; page-level choreography stays under 600ms. Interface movement is transform and opacity, and colour cross-fades. Two exceptions, named: illustrations reveal with a clip-path wipe, and diagram lines draw their strokes as you scroll. With reduced motion on, you get the finished state: lines drawn, pictures shown.

Five duration tokens

  • instant100mspress, hover colour
  • quick160mslink line, card marks, arrow nudge
  • base240mstab slide, switch knob, toast
  • move380msthe red dot on this page
  • stage560msfirst-load grid, illustration wipe — the limit

Try the grammar

Card160ms · linear

Hover or tab into this card

No lift, no shadow. The edge darkens and four registration marks appear.

Read the Intent chapter

Button100ms · scale 0.97

Not pressed yet

Tabs240ms · ease-in-out

What the person is trying to do.

Page transition< 400ms

The old page fades, the new one rises 8px and the header line redraws — in under 400ms.

See it in the catalogue

See all the motion in the catalogue →

06Components in use

Real components, real states.

The kit this system ships, wired up so you can try it. Nothing is sent.

New chapters by email

Demo

This address needs a domain — like name@example.com.

How often
  • TextField

    Errors say what to do next, in plain words — never colour alone.

  • Toggle

    Switches move on the spring curve. It is used nowhere else.

  • SegmentedControl

    The selected segment slides across; it never blinks.

  • Toast

    A toast floats above the page, so it may cast a shadow. Site cards never do.

See every component in the catalogue →

07How it’s built

One source of truth, three readers.

Every token value lives in app/globals.css. Everything else reads it or keeps a mirror, and a test fails the moment a mirror drifts.

app/globals.css

Colour, type and motion tokens — the source of truth

@theme → Tailwind utilities

Site pages

bg-paper, font-display, text-h2 — every page is styled through these.

lib/design/tokens.ts

Motion in JavaScript

Durations and easings for React animations.

public/design-system/v2/tokens.css

Standalone pages and films

A portable copy for review boards and standalone pages. The same type roles are specified for the films.

app/globals.css feeds the site pages, lib/design/tokens.ts and public/design-system/v2/tokens.css

tests/unit/design-tokens.test.tsChecks every mirror against the source. A value that drifts fails the test.

docs/design-system/agent-brief.mdRead first by any agent building a page for this site.