Color
Crown's semantic color roles — Foreground, Border, Content — across six states.
Crown's color system is role-based, not palette-based. Product UI should use semantic color roles rather than raw hex values or palette shades. A role keeps the design intent stable while each brand and theme resolves to its own actual color.
For example, in KP light mode:
palette.KP Blue.700
-> theme.fll.primary.state0.light
-> color.Primary.Foreground.DefaultThe palette value provides the material, the iconic brand token assigns it to a brand intent, and the semantic role exposes the UI-facing API.
Color token chain
| Layer | What it controls | Used by | Use directly? |
|---|---|---|---|
| Raw palette | Shade ramps, alpha colors, neutral values, and spectrum values | Iconic brand colors | Usually no |
| Iconic brand colors | Brand mappings for primary, secondary, function, base, fixed, and CTA intents | Semantic roles | Usually no |
| Semantic roles | UI-facing color roles by purpose, role, state, brand, and theme | Designers and engineers | Yes |
The chain lets Crown keep one semantic API across KP, GWL, and WF while each brand keeps its own color expression. Designers can reason about placement and meaning. Engineers can use stable token names without hard-coding brand colors.
Raw palette families
Raw palette families are the source material for the color system. They define ramps, neutrals, pure colors, greyscale values, social colors, and alpha scales. Palette names describe color material, not UI purpose.
Brand palette families include KP ramps such as KP Navy, KP Blue,
KP Teal, KP Gold, and KP Dindang, plus GWL ramps such as GWL Beige,
GWL Stormcloud, GWL Vogue, and GWL Blue.
Shared palette families include spectrum ramps such as Red, Orange,
Yellow, Lime, Green, Teal, Sky, Blue, Indigo, Violet,
Purple, and Pink; neutral families such as Nevada, Neutral, Pure,
LightGreyscale, and DarkGreyscale; and alpha groups such as brand,
spectrum, and monotone alpha.
Use raw palette values when authoring or reviewing higher-level tokens. In product UI, prefer semantic roles so brand and theme changes continue to resolve correctly.
Iconic brand colors
Iconic brand colors translate palette material into brand intent. This is where KP, GWL, and WF can assign different palette values to the same conceptual slots while the semantic layer above stays stable.
| Iconic intent | What it represents |
|---|---|
primary | Main brand color family |
secondary | Supporting brand color family |
func1 to func4 | Functional feedback families used by semantic states |
fixed1 | Fixed or static-like brand assignment |
cta | High-priority call-to-action emphasis |
base | Surface foundation colors |
on-* | Content, border, and contrast values for color-on-color placement |
Designers can inspect iconic tokens to understand brand placement decisions. Engineers should normally consume the semantic roles instead of referencing iconic paths directly.
Semantic roles
Semantic roles are the public color API. They describe how a color should be used, not which palette shade it resolves to.
| Family | Use for |
|---|---|
Primary | Main brand actions and high-visibility emphasis |
Secondary | Secondary branded emphasis |
Danger | Destructive, blocking, or error states |
Warning | Cautionary states that need attention |
Success | Successful or completed states |
Info | Neutral informational states |
Base | App backgrounds, surfaces, panels, and cards |
on-Base | Text, icons, and outlines placed on normal surfaces |
Static | Colors that should stay stable across light and dark modes |
CTA | Highest-priority commercial action in a page or flow |
Accent | Decorative or categorical spectrum accents |
Each family can expose three placement roles:
| Role | Controls |
|---|---|
Foreground | Fills, emphasized surfaces, and strong visual areas |
Border | Strokes, outlines, dividers, and visible edges |
Content | Text, icons, and other foreground content |
State names describe interaction or emphasis:
| State | Meaning |
|---|---|
Default | Resting state |
Hover | Pointer hover state |
Pressed | Active or pressed state |
Disable | Disabled or unavailable state |
Subtle | Low-emphasis fills or backgrounds |
Muted | Low-emphasis interaction state where available |
Placement guidance
- Use
Basefor app backgrounds, surfaces, panels, and cards. - Use
on-Base.Contentfor text and icons on standard surfaces. - Use
Primaryfor main brand actions and high-visibility emphasis. - Use
Secondaryfor supporting branded emphasis. - Use
Danger,Warning,Success, andInfoonly when the color carries meaning. - Use
Staticwhen a color must not invert between light and dark modes. - Use
CTAfor the highest-priority commercial action on a page or flow. - Prefer semantic roles over raw palette and iconic paths in application code.
Live semantic preview
Switch brands or themes from the header to see the same semantic tokens re-resolve.
Primary
foreground
--crown-color-primary-foreground-default--crown-color-primary-foreground-disable--crown-color-primary-foreground-hover--crown-color-primary-foreground-muted-hover--crown-color-primary-foreground-muted-pressed--crown-color-primary-foreground-pressed--crown-color-primary-foreground-subtle--crown-color-primary-foreground-subtle-hover--crown-color-primary-foreground-subtle-pressedborder
--crown-color-primary-border-default--crown-color-primary-border-disable--crown-color-primary-border-hover--crown-color-primary-border-pressed--crown-color-primary-border-strongcontent
--crown-color-primary-content-default--crown-color-primary-content-disable--crown-color-primary-content-hover--crown-color-primary-content-pressedSecondary
foreground
--crown-color-secondary-foreground-default--crown-color-secondary-foreground-disable--crown-color-secondary-foreground-hover--crown-color-secondary-foreground-muted-hover--crown-color-secondary-foreground-muted-pressed--crown-color-secondary-foreground-pressed--crown-color-secondary-foreground-subtle--crown-color-secondary-foreground-subtle-hover--crown-color-secondary-foreground-subtle-pressedborder
--crown-color-secondary-border-default--crown-color-secondary-border-disable--crown-color-secondary-border-hover--crown-color-secondary-border-pressed--crown-color-secondary-border-strongcontent
--crown-color-secondary-content-default--crown-color-secondary-content-disable--crown-color-secondary-content-hover--crown-color-secondary-content-pressedDanger
foreground
--crown-color-danger-foreground-default--crown-color-danger-foreground-disable--crown-color-danger-foreground-hover--crown-color-danger-foreground-muted-hover--crown-color-danger-foreground-muted-pressed--crown-color-danger-foreground-pressed--crown-color-danger-foreground-subtle--crown-color-danger-foreground-subtle-hover--crown-color-danger-foreground-subtle-pressedborder
--crown-color-danger-border-default--crown-color-danger-border-disable--crown-color-danger-border-hover--crown-color-danger-border-pressed--crown-color-danger-border-strongcontent
--crown-color-danger-content-default--crown-color-danger-content-disable--crown-color-danger-content-hover--crown-color-danger-content-pressedInfo
foreground
--crown-color-info-foreground-default--crown-color-info-foreground-disable--crown-color-info-foreground-hover--crown-color-info-foreground-muted-hover--crown-color-info-foreground-muted-pressed--crown-color-info-foreground-pressed--crown-color-info-foreground-subtle--crown-color-info-foreground-subtle-hover--crown-color-info-foreground-subtle-pressedborder
--crown-color-info-border-default--crown-color-info-border-disable--crown-color-info-border-hover--crown-color-info-border-pressed--crown-color-info-border-strongcontent
--crown-color-info-content-default--crown-color-info-content-disable--crown-color-info-content-hover--crown-color-info-content-pressedSuccess
foreground
--crown-color-success-foreground-default--crown-color-success-foreground-disable--crown-color-success-foreground-hover--crown-color-success-foreground-muted-hover--crown-color-success-foreground-muted-pressed--crown-color-success-foreground-pressed--crown-color-success-foreground-subtle--crown-color-success-foreground-subtle-hover--crown-color-success-foreground-subtle-pressedborder
--crown-color-success-border-default--crown-color-success-border-disable--crown-color-success-border-hover--crown-color-success-border-pressed--crown-color-success-border-strongcontent
--crown-color-success-content-default--crown-color-success-content-disable--crown-color-success-content-hover--crown-color-success-content-pressedWarning
foreground
--crown-color-warning-foreground-default--crown-color-warning-foreground-disable--crown-color-warning-foreground-hover--crown-color-warning-foreground-muted-hover--crown-color-warning-foreground-muted-pressed--crown-color-warning-foreground-pressed--crown-color-warning-foreground-subtle--crown-color-warning-foreground-subtle-hover--crown-color-warning-foreground-subtle-pressedborder
--crown-color-warning-border-default--crown-color-warning-border-disable--crown-color-warning-border-hover--crown-color-warning-border-pressed--crown-color-warning-border-strongcontent
--crown-color-warning-content-default--crown-color-warning-content-disable--crown-color-warning-content-hover--crown-color-warning-content-pressedStatic
foreground
--crown-color-static-foreground-default--crown-color-static-foreground-disable--crown-color-static-foreground-hover--crown-color-static-foreground-muted-hover--crown-color-static-foreground-muted-pressed--crown-color-static-foreground-pressed--crown-color-static-foreground-subtle--crown-color-static-foreground-subtle-hover--crown-color-static-foreground-subtle-pressedborder
--crown-color-static-border-default--crown-color-static-border-disable--crown-color-static-border-hover--crown-color-static-border-pressed--crown-color-static-border-strongcontent
--crown-color-static-content-default--crown-color-static-content-disable--crown-color-static-content-hover--crown-color-static-content-pressedCTA
foreground
--crown-color-cta-foreground-default--crown-color-cta-foreground-disable--crown-color-cta-foreground-hover--crown-color-cta-foreground-pressed--crown-color-cta-foreground-secondary--crown-color-cta-foreground-secondary-disable--crown-color-cta-foreground-secondary-hover--crown-color-cta-foreground-secondary-pressed--crown-color-cta-foreground-tertiary--crown-color-cta-foreground-tertiary-disable--crown-color-cta-foreground-tertiary-hover--crown-color-cta-foreground-tertiary-pressedborder
--crown-color-cta-border-default--crown-color-cta-border-disable--crown-color-cta-border-hover--crown-color-cta-border-pressed--crown-color-cta-border-secondary--crown-color-cta-border-secondary-disable--crown-color-cta-border-secondary-hover--crown-color-cta-border-secondary-pressed--crown-color-cta-border-tertiary--crown-color-cta-border-tertiary-disable--crown-color-cta-border-tertiary-hover--crown-color-cta-border-tertiary-pressedcontent
--crown-color-cta-content-default--crown-color-cta-content-disable--crown-color-cta-content-hover--crown-color-cta-content-pressed--crown-color-cta-content-secondary--crown-color-cta-content-secondary-disable--crown-color-cta-content-secondary-hover--crown-color-cta-content-secondary-pressed--crown-color-cta-content-tertiary--crown-color-cta-content-tertiary-disable--crown-color-cta-content-tertiary-hover--crown-color-cta-content-tertiary-pressedFull color inventory
| Token | Layer | King Power light | King Power dark |
|---|---|---|---|
color-accent-border-blue--crown-color-accent-border-blue | semantic | oklch(0.8408 0.0815 251.56) | oklch(0.4064 0.1645 260.28) |
color-accent-border-green--crown-color-accent-border-green | semantic | oklch(0.834 0.145 154.18) | oklch(0.4429 0.1049 140.7) |
color-accent-border-indigo--crown-color-accent-border-indigo | semantic | oklch(0.8451 0.0764 271.61) | oklch(0.4092 0.1691 278.71) |
color-accent-border-lime--crown-color-accent-border-lime | semantic | oklch(0.8397 0.1602 119.71) | oklch(0.4547 0.1123 129.38) |
color-accent-border-orange--crown-color-accent-border-orange | semantic | oklch(0.848 0.0968 58.86) | oklch(0.4365 0.1223 43.65) |
color-accent-border-pink--crown-color-accent-border-pink | semantic | oklch(0.857 0.117 333.8) | oklch(0.4199 0.1591 353.26) |
color-accent-border-purple--crown-color-accent-border-purple | semantic | oklch(0.8522 0.1081 318.68) | oklch(0.4271 0.1877 328.68) |
color-accent-border-red--crown-color-accent-border-red | semantic | oklch(0.8508 0.0814 17.96) | oklch(0.4313 0.1455 29.92) |