NewPages, now in beta

Stop policing
production

Your design tokens, components and pages are data in your product repo. Every change ships as a contrast-checked pull request, so drift is structurally impossible.

Private beta. No spam. One email when I open access. Privacy

acme/webmain14 of 14 checks pass

Tokens

color.accent#004cdf
radius.base4px

This demo is live. Edits restyle this page, and the gate blocks the pale swatch because it fails contrast.

Canvas

Order #4821
Placed Tuesday. 3 items.
{
  "color": {
    "accent": {
      "$type": "color",
      "$value": {
        "colorSpace": "srgb",
        "components": [0, 0.298, 0.875],
        "hex": "#004cdf"
      }
    }
  },
  "radius": {
    "base": {
      "$type": "dimension",
      "$value": { "value": 4, "unit": "px" }
    }
  }
}

Plain DTCG. The value is the only thing your edit changes.

14 of 14 checks passlight mode

You made the decision in thirty seconds. You'll be enforcing it for a year

Approved, documented, handed off. Then the real job starts.

The DM asking for the exact hex

It arrives the week after handoff, and every week after that.

The QA pass that catches the wrong gray

Your file was right. Production drifted anyway, one hardcoded value at a time.

The audit that finds a contrast failure

A failure that was never in your file, found after it shipped.

Every tool in your stack exists to manage the gap between design and production.

Kampa removes the gap. There is nothing left to police.

Not another component library In pilot

Tokens were the first level. Components are the next: every project starts with twenty, each one bound to your tokens and graded by the same gate before anything can ship.

component.button2 variants × 3 states × 2 modes12 of 12 pass
light #004cdf
Button contrast in light mode, by variant and state
Variantresthoveractive
primary6.8:18.1:19.6:1
secondary6.8:16.2:15.6:1
dark #2a97ff
Button contrast in dark mode, by variant and state
Variantresthoveractive
primary5.9:16.8:17.8:1
secondary6.0:15.6:15.1:1

Live: pick a color in the demo above and every cell re-grades. The swatch you pick carries a light and a dark value, and both have to pass.

Twenty starters

  • Button4 variants, 3 sizes
  • Input3 sizes
  • Checkboxnative states
  • Cardtitle, body, footer
  • Badgeinfo, success, warning, error
  • Alerticon, title, body

Plus Link, Textarea, Select, Radio, Switch, Separator, Avatar, Field, Dialog, Accordion, Navigation, Breadcrumb, Table and Pagination.

Repoint any slot to another token, per variant, per state and per part. Every state the native element has, from hover and focus to disabled and invalid.

Bound, not copied

Every slot is an alias to one of your tokens, never a raw value. Change the token and every component follows.

Every permutation graded

Text on fill, in every variant, state and mode. A component that fails blocks the push.

Plain files in your repo

A DTCG document per component, next to your tokens, plus the CSS and an HTML snippet generated from it. You need neither Kampa nor its docs to read or use one.

Whole pages from your own components Beta

Assemble a page on a canvas from the components you already have. It is graded by the same gate and ships in the same pull request.

Layers

  • boxlayout
  • stacklayout
  • FieldEmail
  • FieldPassword
  • CheckboxRemember me
  • Buttonprimary
  • Linkdefault

Two kinds of node: an instance of one of your components, or a layout node that places its children.

pages/sign-inone frame per mode4 of 4 pairs pass
light #004cdf
  • Button label on fill6.8:1
  • Link on surface6.8:1
dark #2a97ff
  • Button label on fill5.9:1
  • Link on surface6.0:1

Live: the page reads the same tokens as everything above. Pick a color in the demo and both frames re-grade.

Only your components

A page is a tree of component instances and layout nodes. No free geometry, and every value is a token.

Graded where it sits

Every component is checked on the background it sits on, in every mode. A page that fails blocks the push.

Plain files in your repo

One document per page, next to your components, plus the HTML and CSS generated from it.

What no other tool in your stack does

Your taste, enforced on every agent, every dev, every future edit.

Made by the designer, not relayed

You change the values that ship on a visual surface, not through a prompt or a ticket. The edit you make is the edit that reaches production.

Blocked before the write

A failing pair never reaches your repository, and the gate names what stopped it. Low contrast ships only as an explicit exemption, never as an accident.

Delivered as a pull request

Every change is a branch and a pull request in your repository. You choose who merges it: a reviewer, or the check.

One decision underneath all three

Your tokens, components and pages live in your product repository, and your design tool, docs, production and AI tools all read them. There is no sync step, so nothing can fall out of sync.

A real pull request,
not a copy of one

Token sync tools borrow the language of engineering, but review happens in their app, on their audit trail. In Kampa, a change is a pull request in your repository.

  1. Decide

    Edit tokens, components and pages in Kampa, on the values that ship, not a picture of them.

  2. Check

    The gate grades every pair, every component permutation and every page before a commit exists.

  3. Ship

    Kampa opens a pull request in your repository: your reviewers, your branch protection, your merge button. The audit trail is your Git history, which outlives every vendor, including Kampa.

OpenUpdate color.accent #128Example

kampa wants to merge 1 commit into main

tokens/light.json- "hex": "#004cdf"+ "hex": "#0e7355"
tokens/dark.json- "hex": "#2a97ff"+ "hex": "#34d399"
tokens/components/button.jsonUnchanged. Its slots are aliases, so they follow.
  • Kampa contrast check14 of 14 pass · button 12 permutations
  • Buildyour CI, unchanged
Review requested from your design lead and frontend

The model proposes. Kampa disposes

An agent ships whatever it happened to write, and someone still reads every line to be sure. A change from Kampa is one validated artifact, contrast-checked before the pull request exists, and any agent you connect goes through the same gate.

Tokens, components,
pages. Flows next

Every level of the product will live as production code, and every change will ship the way you made it. Three levels are in: tokens are live, components are in pilot, and Pages, with its canvas, is in beta.

  1. Live

    Tokens

    Color, type, spacing, radius. Live for pilot teams now.

  2. In pilot

    Components

    Twenty starters, from button to table. Every slot bound to a token, every permutation graded.

  3. Beta

    Pages

    Whole pages assembled from your own components on a canvas. Graded by the same gate, shipped in the same pull request.

  4. Next

    Flows

    Journeys end to end. From a single token to a full front end.

Stop drawing pictures of your design system

Tokens, components and pages as production data. Every change a pull request, contrast-checked before it ships.

Free for solo use at launch. Paid plans for teams. Privacy

Who's building this

I'm Tonda Pospíšil, and I spent twenty years designing fintech and enterprise products, watching approved decisions degrade on their way to production. Kampa is the tool I needed on every one of those teams, and I'm building it solo with a small group of pilot testers.

Tonda on LinkedIn