Marknaden
Priser
Logga inKom igång
FältguidenCSS och webb
CSS och webb

Designtokens: en enda källa för färg och typografi

En varumärkesfärg som finns i fyrtio filer kommer att glida isär. En token bor på ett ställe och varje plattform läser från den. Så strukturerar du designtokens, namnger dem så att de håller och levererar dem till kod och designverktyg.

GradientlyVerifierat Gradiently-konto·1 oktober 2026·4 minuters läsning
Omslag: Topaz Temple · GR·N058·5B

Kortversionen

  • Designtokens är namngivna, plattformsneutrala värden för designbeslut som färger, typsnittsfamiljer, storlekar, avstånd, radier, skuggor och rörelsetider.
  • De flesta tokensystem använder tre nivåer: primitiva tokens håller råa värden, semantiska tokens beskriver ett syfte och komponenttokens tillämpar syften på specifika delar.
  • Formatet från W3C Design Tokens Community Group lagrar tokens som JSON med egenskaperna $value och $type och refererar till andra tokens med klammerparenteser.
  • Verktyg som Style Dictionary omvandlar en tokenfil till anpassade CSS-egenskaper, JavaScript samt resurser för iOS och Android.
  • Mörkt läge och flera varumärken blir en fråga om att byta värdena bakom semantiska tokens, medan komponenterna förblir oförändrade.
På den här sidan
Så ser en designtoken utPrimitiva, semantiska och komponenttokensNamnge designtokens så att de hållerFrån tokenfil till CSS och apparMörkt läge och flera varumärkenInföra designtokens

Designtokens är namngivna värden för varje designbeslut som ett varumärke upprepar: färger, typsnitt, typstorlekar, avstånd, hörnradier, skuggor och animationstider. I stället för att skriva #5b21b6 i ett formatblad, en Figma-fil och en iOS-app definierar du color.brand.700 en gång, i en fil, och genererar varje plattforms format från den. Ändra tokenen så uppdateras alla produkter tillsammans. Den enda sanningskällan är hela poängen.

Så ser en designtoken ut

En token har ett namn, ett värde och en typ. Formatet som publicerats av W3C Design Tokens Community Group skriver dem som JSON, med egenskaper som börjar med ett dollartecken så att de inte kan krocka med gruppnamn.

json
{
  "color": {
    "violet": {
      "100": { "$type": "color", "$value": "#ede9fe" },
      "500": { "$type": "color", "$value": "#8b5cf6" },
      "700": { "$type": "color", "$value": "#6d28d9" },
      "900": { "$type": "color", "$value": "#4c1d95" }
    },
    "ink": { "$type": "color", "$value": "#14121f" },
    "paper": { "$type": "color", "$value": "#faf8ff" }
  },
  "font": {
    "heading": { "$type": "fontFamily", "$value": ["Fraunces", "Georgia", "serif"] },
    "body": { "$type": "fontFamily", "$value": ["Inter", "system-ui", "sans-serif"] }
  },
  "radius": {
    "control": { "$type": "dimension", "$value": { "value": 10, "unit": "px" } }
  },
  "duration": {
    "quick": { "$type": "duration", "$value": { "value": 160, "unit": "ms" } }
  }
}
Primitiva tokens i communitygruppens format. Grupper kan nästlas fritt; sökvägen, som color.violet.700, blir tokenens namn.
Färgtokensen ovan som färgrutor. Det här är råa ingredienser: ingenting säger ännu vilken som är en knapp eller en rubrik.

Primitiva, semantiska och komponenttokens

En platt lista med färger är en palett, inte ett system. Strukturen som håller i åratal har tre nivåer, var och en refererar till den under. Komponenter rör aldrig råa värden; de ber om ett syfte.

Primitivcolor.violet.700

Värde

#6d28d9

Ändras när

Paletten designas om
Semantisk

Exempelnamn

color.action.primary

Värde

{color.violet.700}

Ändras när

En roll flyttas till en annan färg
Semantisk

Exempelnamn

color.text.default

Värde

{color.ink}

Ändras när

Mörkt läge, ett nytt varumärke
Komponent

Exempelnamn

button.primary.background

Värde

{color.action.primary}

Ändras när

En komponent behöver ett undantag
NivåExempelnamnVärdeÄndras när
Primitivcolor.violet.700#6d28d9Paletten designas om
Semantiskcolor.action.primary{color.violet.700}En roll flyttas till en annan färg
Semantiskcolor.text.default{color.ink}Mörkt läge, ett nytt varumärke
Komponentbutton.primary.background{color.action.primary}En komponent behöver ett undantag
Referenser i klammerparenteser är alias. Ändra color.violet.700 så följer varje token som pekar på den.
json
{
  "color": {
    "action": {
      "primary": { "$type": "color", "$value": "{color.violet.700}" },
      "primary-hover": { "$type": "color", "$value": "{color.violet.900}" }
    },
    "text": {
      "default": { "$type": "color", "$value": "{color.ink}" },
      "on-action": { "$type": "color", "$value": "{color.paper}" }
    },
    "surface": {
      "page": { "$type": "color", "$value": "{color.paper}" },
      "tint": { "$type": "color", "$value": "{color.violet.100}" }
    }
  }
}
Semantiska tokens beskriver vad en färg är till för. Det är nivån designers och utvecklare bör prata på.

Många team stannar vid två nivåer, primitiv och semantisk, och lägger bara till komponenttokens där en komponent verkligen skiljer sig. Det håller filen lagom liten för att förstå.

Namnge designtokens så att de håller

Namn överlever värden. En token som heter color.purple går sönder den dag varumärket blir blågrönt; en token som heter color.action.primary överlever det. Namnge semantiska tokens efter roll, och låt primitiva namn beskriva värdet.

Namn som åldras dåligt

  • color.purple som används för knappar
  • text.dark, som är ljus i mörkt läge
  • spacing.16 som används som layoutregel
  • blue2, blueNew, blueFinal
  • hero.gradient.lisa uppkallad efter en person

Namn som håller

  • color.action.primary
  • color.text.default
  • space.section som pekar på {space.16}
  • En numrerad skala som blue.100 till blue.900
  • gradient.hero med sina stopp som tokens

Välj ett mönster, som kategori, sedan roll, sedan variant, sedan tillstånd, och skriv ner det i din varumärkesriktlinje. Konsekvens i namngivningen betyder mer än vilket mönster du väljer.

Från tokenfil till CSS och appar

Tokenfilen levereras inte som den är. Ett byggsteg omvandlar den till vad varje plattform behöver. Style Dictionary är det mest använda öppna verktyget för detta, och andra läser samma format. För webben är utdata oftast anpassade CSS-egenskaper.

css
:root {
  --color-violet-100: #ede9fe;
  --color-violet-700: #6d28d9;
  --color-violet-900: #4c1d95;
  --color-ink: #14121f;
  --color-paper: #faf8ff;

  --color-action-primary: var(--color-violet-700);
  --color-text-default: var(--color-ink);
  --color-surface-page: var(--color-paper);

  --font-heading: Fraunces, Georgia, serif;
  --radius-control: 10px;
  --duration-quick: 160ms;
}

.button {
  background: var(--color-action-primary);
  color: var(--color-paper);
  border-radius: var(--radius-control);
  transition: background var(--duration-quick) ease;
}
Genererad utdata. Alias blir var()-referenser, så det semantiska lagret överlever in i webbläsaren. Se CSS-variabler för teman.

Om du använder Tailwind v4 är @theme-blocket i sig ett tokenlager: varje --color-*-variabel blir verktygsklasser. Tailwind-färger visar hur du kopplar in en tokenramp i det. Samma fil kan också ge Swift-konstanter och Android-resurser, vilket är där tokens lönar sig för team på flera plattformar.

Mörkt läge och flera varumärken

Eftersom komponenter bara läser semantiska tokens är ett tema bara en annan uppsättning värden för det lagret. Mörkt läge omdefinierar color.text.default och color.surface.page; ett andra varumärke omdefinierar color.action.primary. Ingenting i komponenterna ändras.

css
@media (prefers-color-scheme: dark) {
  :root {
    --color-text-default: #e9e5f5;
    --color-surface-page: #0b0a14;
    --color-action-primary: var(--color-violet-500);
  }
}

[data-brand="harbour"] {
  --color-action-primary: #0f766e;
}
Två åsidosättningar, inga komponentändringar. Gradienter förtjänar också egna mörka värden; gradienter i mörkt läge förklarar hur du trimmar dem.

Tokens i designverktyg

Figma Variables stöder samlingar och lägen, som passar snyggt mot primitiva och semantiska tokens och ljusa och mörka teman. Behåll tokenfilen som källa och synka in i designverktyget, inte tvärtom, annars är de oense inom en månad.

Införa designtokens

  1. 1

    Inventera det som finns

    Samla varje färg, typstorlek och avståndsvärde som används. Räkna med dubbletter som skiljer sig med en hexsiffra.

  2. 2

    Definiera primitiver

    Reducera dem till tydliga skalor. Att bygga färgramper i OKLCH håller stegen jämna; se OKLCH förklarat.

  3. 3

    Lägg till det semantiska lagret

    Namnge roller: text, yta, kant, handling, återkoppling. Peka var och en på en primitiv.

  4. 4

    Automatisera bygget

    Generera CSS och appresurser från filen i ditt bygge, aldrig för hand.

  5. 5

    Bevaka det

    Lintra efter råa hexvärden i komponenter, så att ny kod använder tokens från dag ett.

Tokens håller produkten konsekvent, men varumärken glider också isär i grafiken som görs utanför den: inlägg, bildspel, banners. Ett Gradiently-varumärkeskit håller samma beslut, dina färgpaletter, rubrik- och brödtypsnitt, logotyper och röst, så att designer gjorda i Studio matchar. Och eftersom Gradiently fungerar inuti ChatGPT, Claude och andra assistenter som stöder MCP-servrar på distans kan en assistent med en begränsad API-nyckel skapa designer i varumärkets stil från samma arbetsyta. Varumärkeskonsekvens går igenom den bredare vanan.

Koppla ihop din AI-assistent

Låt Claude eller valfri MCP-klient söka bland Marks och skapa designer som öppnas i Studio.

Läs utvecklardokumentationen

Vanliga frågor

Vad är designtokens?

Namngivna värden för designbeslut som färger, typsnitt, avstånd, radier och rörelse, lagrade i en plattformsneutral fil och omvandlade till CSS, appkod och variabler i designverktyg.

Vad är skillnaden mellan primitiva och semantiska tokens?

Primitiva tokens håller råa värden, som color.violet.700. Semantiska tokens beskriver ett syfte, som color.action.primary, och pekar på en primitiv.

Är designtokens samma sak som CSS-variabler?

Nej. Tokens är källan, lagrad i ett neutralt format som JSON; anpassade CSS-egenskaper är en utdata som genereras från dem, vid sidan av utdata för andra plattformar.

Finns det ett standardformat för designtokens?

W3C Design Tokens Community Group publicerar ett JSON-format som använder $value, $type och alias med klammerparenteser, som verktyg som Style Dictionary kan läsa.

Hur hanterar designtokens mörkt läge?

Komponenter läser semantiska tokens, och ett mörkt tema ger andra värden för de tokens, så komponenterna behöver inga ändringar.

Dela den här guiden

Skriven av GradientlyVerifierat Gradiently-konto

Teamet bakom Gradiently, ett designverktyg byggt kring Marks: levande gradienter som får allt du gör att kännas som ditt.

Se vår profil

På den här sidan

Så ser en designtoken utPrimitiva, semantiska och komponenttokensNamnge designtokens så att de hållerFrån tokenfil till CSS och apparMörkt läge och flera varumärkenInföra designtokens

Dela den här guiden

Nästa i CSS och webb

CSS linear-gradient: den kompletta guiden till linear-gradient()

Läs vidare

Alla guider om CSS och webb
CSS och webb

Bygg ett tema med CSS-variabler: ljust, mörkt och varumärkesfärger

5 minuters läsning

Teman går fel när färger namnges efter hur de ser ut i stället för vad de gör. Namnge rollerna, peka dem mot en palett, så blir ljust läge, mörkt läge och ett andra varumärke några rader vardera.

CSS och webb

Tailwind-färger: använd och utöka paletten

5 minuters läsning

Standardpaletten är en bra startpunkt men ett dåligt slutresultat, eftersom tusentals webbplatser delar den. Så fungerar Tailwind-färger i v4, och så lägger du till dina egna utan att något går sönder.

Varumärke

Så gör du en grafisk manual som folk faktiskt använder

5 minuters läsning

De flesta grafiska manualer öppnas en gång och glöms bort. De som fungerar är korta, visar varje regel och finns där folk designar. Så skriver du en sådan.

Hitta looken som bara är din.

Varje Mark är en levande bakgrund med en enda ägare. Prova en ledig Mark och säkra din när det känns rätt.

Börja designa

Kontrollera ett certifikat

Skriv ett certifikatnummer eller en Marks kod för att se vem som äger den.

Fungerar med ChatGPT och Claude

Be din AI om en design. Den skapar den i din Mark, redo att redigera.

ChatGPTClaude
Så ansluter du

Produkt

  • Marknaden
  • Utforska
  • Priser
  • Certifikat

Lär dig

  • Fältguiden
  • Hjälpcenter
  • Nyheter

Utvecklare

  • Översikt
  • ChatGPT och Claude
  • API-referens
  • API-nycklar

Företaget

  • Om oss
  • Kontakta oss
  • Logga in

Juridik

  • Villkor
  • Integritet
  • Återbetalningar
  • Mark-skydd
  • Cookies
  • Alla policyer
Rör dig över bokstäverna. Var och en bär en riktig Mark.Tryck på en bokstav för att se dess Mark.Ett namn. Tio Marks inuti.
© 2026 Gradiently