Browse documentation

Foundations

Color

Apply the palette with clear structural, action, categorical, and semantic roles.

Structural, action, categorical, and semantic roles

Start with warm ivory for the canvas and ink navy for text or a dark field. Slate supports muted text on light surfaces; pale steel supplies quiet borders and muted text on dark surfaces. These four colors form the exported structuralColors array.

Existing system rule: core cobalt is the primary action, link, and CTA color. Signal teal, insight coral, focus saffron, and systems violet are reserved for data categories, charts, stat colors, and campaign accents. Do not use those four accents as logo fills, primary CTAs, or persistent navigation colors.

The six-color categoricalPalette starts with cobalt and cornflower, followed by those four storytelling accents. Use labels, shapes, or visible values as well as color to identify categories.

semanticColors maps positive to green, warning to saffron, and error to coral. Positive green is a status color, not a chart category or brand fill. Saffron and coral have two permitted roles; surrounding words distinguish a warning or error from a data category. The marketing conventions describe green as a future state, but this revision already exposes it through video tone tokens and status-capable components.

structuralColors
[
  "#F4F1E9",
  "#0B1221",
  "#596579",
  "#C7CDD6"
]
categoricalPalette
[
  "#2457F5",
  "#6F91E8",
  "#15877A",
  "#E66752",
  "#D99A24",
  "#7657A8"
]
semanticColors
{
  "positive": "#2F8A5B",
  "warning": "#D99A24",
  "error": "#E66752"
}
--ds-warning
var(--ds-focus-saffron)
--ds-error
var(--ds-insight-coral)

Copy palette names and values

JavaScript names below are public exports; import coreuxPalette from @coreux/ui. CSS names are the installed stylesheet’s --ds-* properties: use var(--ds-core-cobalt) in CSS. Tailwind exposes the matching semantic names, such as bg-core-cobalt and text-ink-navy. Import the package stylesheet once before using its CSS variables or utilities.

coreuxPalette.warmIvory
#F4F1E9
--ds-warm-ivory
#f4f1e9
coreuxPalette.inkNavy
#0B1221
--ds-ink-navy
#0b1221
coreuxPalette.coreCobalt
#2457F5
--ds-core-cobalt
#2457f5
coreuxPalette.slate
#596579
--ds-slate
#596579
coreuxPalette.paleSteel
#C7CDD6
--ds-pale-steel
#c7cdd6
coreuxPalette.cornflower
#6F91E8
--ds-cornflower
#6f91e8
coreuxPalette.signalTeal
#15877A
--ds-signal-teal
#15877a
coreuxPalette.insightCoral
#E66752
--ds-insight-coral
#e66752
coreuxPalette.focusSaffron
#D99A24
--ds-focus-saffron
#d99a24
coreuxPalette.systemsViolet
#7657A8
--ds-systems-violet
#7657a8
coreuxPalette.positiveGreen
#2F8A5B
--ds-positive-green
#2f8a5b

Choose combinations by role

The comparison below teaches color purpose, not a blanket contrast guarantee. Swatches and tone samples keep their text labels outside ambiguous colors. Check the final text/background pairing and provide a readable label rather than assuming every palette combination works for small text.

Good — cobalt primary action
Start a project

Static color specimen. Cobalt identifies the brand action.

Poor — storytelling accent as a primary action
Start a project

Saffron is readable here, but its role is data, campaign emphasis, or warning. It is not the primary action color.

Appearance fields and shared tones

Video-derived primitives use fieldMode="light" | "dark" and, where supported, tone="neutral" | "accent" | "muted" | "positive" | "warning" | "error". Each tone supplies surface, text, border, and accent values. Expand a sample to copy its complete object. Actual component props decide which fields they use.

These objects do not create a global theme. Marketing templates instead use their own background and tone="ink" | "ivory" props. Refer to each component’s contract before applying either vocabulary.

Light field

Primary textMuted supporting text
Surface with grid-colored boundary
fieldModeTokens.light
{
  "field": "#F4F1E9",
  "foreground": "#0B1221",
  "mutedForeground": "#596579",
  "surface": "#F4F1E9",
  "border": "#596579",
  "grid": "#C7CDD6"
}
neutral
light / neutral values
toneTokens.light.neutral
{
  "surface": "#F4F1E9",
  "text": "#0B1221",
  "border": "#596579",
  "accent": "#0B1221"
}
accent
light / accent values
toneTokens.light.accent
{
  "surface": "#2457F5",
  "text": "#F4F1E9",
  "border": "#2457F5",
  "accent": "#F4F1E9"
}
muted
light / muted values
toneTokens.light.muted
{
  "surface": "#C7CDD6",
  "text": "#0B1221",
  "border": "#596579",
  "accent": "#596579"
}
positive
light / positive values
toneTokens.light.positive
{
  "surface": "#F4F1E9",
  "text": "#0B1221",
  "border": "#2F8A5B",
  "accent": "#2F8A5B"
}
warning
light / warning values
toneTokens.light.warning
{
  "surface": "#F4F1E9",
  "text": "#0B1221",
  "border": "#D99A24",
  "accent": "#D99A24"
}
error
light / error values
toneTokens.light.error
{
  "surface": "#F4F1E9",
  "text": "#0B1221",
  "border": "#E66752",
  "accent": "#E66752"
}

Dark field

Primary textMuted supporting text
Surface with grid-colored boundary
fieldModeTokens.dark
{
  "field": "#0B1221",
  "foreground": "#F4F1E9",
  "mutedForeground": "#C7CDD6",
  "surface": "#0B1221",
  "border": "#C7CDD6",
  "grid": "#596579"
}
neutral
dark / neutral values
toneTokens.dark.neutral
{
  "surface": "#0B1221",
  "text": "#F4F1E9",
  "border": "#C7CDD6",
  "accent": "#F4F1E9"
}
accent
dark / accent values
toneTokens.dark.accent
{
  "surface": "#2457F5",
  "text": "#F4F1E9",
  "border": "#6F91E8",
  "accent": "#F4F1E9"
}
muted
dark / muted values
toneTokens.dark.muted
{
  "surface": "#596579",
  "text": "#F4F1E9",
  "border": "#C7CDD6",
  "accent": "#C7CDD6"
}
positive
dark / positive values
toneTokens.dark.positive
{
  "surface": "#0B1221",
  "text": "#F4F1E9",
  "border": "#2F8A5B",
  "accent": "#2F8A5B"
}
warning
dark / warning values
toneTokens.dark.warning
{
  "surface": "#0B1221",
  "text": "#F4F1E9",
  "border": "#D99A24",
  "accent": "#D99A24"
}
error
dark / error values
toneTokens.dark.error
{
  "surface": "#0B1221",
  "text": "#F4F1E9",
  "border": "#E66752",
  "accent": "#E66752"
}

Apply color tokens

Link to this example1 presentation

A working text link and labeled categories apply distinct roles in a consumer-owned composition.

Choose a clear next step.

Keep the action color separate from the categories in your story.

  • Research
  • Design
  • Delivery
Read the color details

Labels identify categories even without color. This is an illustrative composition.

Preview only: surrounding canvas and spacing. All metrics are illustrative.

Values generated from @coreux/ui at 06f42fd: public foundation tokens, marketing stylesheet, bundled font definitions, and marketing conventions. Source links require repository access. Install the package and styles once.