Primary references
These sources support the standards and technical explanations in this guide. Color Pick recommendations and product-specific limitations are identified separately in the article.
Learn how to turn one brand color or an existing palette into themes, semantic roles, component states, repair evidence, and production-ready design-token exports.
Open the Design System Doctor, choose whether you are starting from one brand color or importing an existing palette, then review the generated primitive, semantic, and component tokens. Check architecture findings, token lineage, contrast repairs, state coverage, themes, and export files in order. New users should start with a new system rather than merging into an existing project.
The tool turns colors into a structured system rather than merely displaying swatches.
Primitive tokens store available source colors. Semantic tokens describe product roles such as canvas, text, border, action, focus, and status. Component tokens apply those roles to concrete states such as a primary button hover background.
The Doctor also creates light, dark, and high-contrast contexts, then lets you add arbitrary themes such as OLED, campaign, seasonal, or low-vision variants.
| Layer | Example | Purpose |
|---|---|---|
| Primitive | primitive.brand.600 | Reusable source color |
| Semantic | semantic.action.primary | Product meaning |
| Component | component.button.primary.background | Specific UI state |
This is the simplest workflow for a first project.
Enter a project name.
Enter or pick the canonical brand color.
Review the automatically generated brand scale, semantic roles, component tokens, and built-in themes.
Open Architecture Linter and resolve errors before optional governance warnings.
Open Advanced Repair and review contrast evidence before applying selected changes.
Check State Coverage, then export the system pack.
Upload a local JSON, CSS, tokens, or text file and let the detection summary confirm what will be imported.
Choose Start a new system.
Select Choose local file and pick the palette file.
Confirm the detected format, color count, aliases, ignored values, and sample paths.
Select Import detected colors.
The first detected literal color becomes the canonical brand color; remaining colors are preserved as imported tokens.
Review semantic mappings because a palette alone cannot know which color should be used for every UI role.
{
"name": "Product palette",
"colors": [
{ "name": "Brand", "hex": "#2563EB" },
{ "name": "Accent", "hex": "#0F766E" },
{ "name": "Canvas", "hex": "#F8FAFC" },
{ "name": "Text", "hex": "#0F172A" }
]
}Each tab answers a different engineering question.
| Tab | Question | Action |
|---|---|---|
| Build & themes | What colors and contexts exist? | Check import and previews |
| Architecture linter | Is the token structure healthy? | Resolve errors and important warnings |
| Token graph | Where does this value come from? | Trace aliases and downstream use |
| Advanced repair | Which measured combinations fail? | Select, apply, or undo evidence-backed changes |
| State coverage | Are required component states represented? | Add missing states |
| Migration | What changes between releases? | Review regressions and breaking paths |
| Multi-brand | Can one architecture support several brands? | Compare brand × theme results |
| Export | What should developers receive? | Download the complete system pack |
A high score means the implemented checks passed; it does not prove every screen is accessible.
The Doctor can measure token resolution, contrast pairings, architecture rules, and expected state coverage. It cannot verify that every exported token is used correctly in every real component.
Test focus behavior, zoom, content changes, responsive layouts, browser rendering, assistive technology, and the final product before release.
Projects remain browser-first and can be backed up in portable formats.
Most import problems are caused by file shape, unsupported values, or choosing the wrong import behavior.
| Problem | Likely cause | Fix |
|---|---|---|
| Zero detected colors | JSON contains no parseable color values | Use HEX, RGB, HSL, OKLCH, named CSS colors, or a supported token object |
| Colors imported but UI remains similar | Imported palette colors are not semantic roles yet | Review and remap semantic tokens |
| Existing work disappeared | Start a new system was selected | Use Merge into current system or restore the project backup |
| Many linter warnings | Raw palette values were imported as role tokens | Move reusable values to primitive tokens and alias semantic roles |
| Share URL is too large | The system contains many tokens or themes | Download the project backup instead |
Follow the beginner workflow while the detection summary, linter, lineage, repair evidence, and exports stay in one local workspace.
No. Start with one color or a small palette and follow the recommended tab order. The guide explains primitive, semantic, and component layers as you review the generated system.
Choose Start a new system when the file is a palette or when you do not need to preserve an existing Doctor project. Choose Merge only when you intentionally want to add or replace token paths in the current system.
It creates a practical starting architecture, but product meaning requires human review. Confirm which colors represent text, background, action, status, and component states.
No token-processing endpoint is required. The browser reads the selected file locally and the Doctor processes its contents in the page.
These sources support the standards and technical explanations in this guide. Color Pick recommendations and product-specific limitations are identified separately in the article.