Skip to main content
Aura’s token system is designed to be used as-is for the vast majority of use cases. The tokens are centrally maintained and contrast-tested across themes. By using the default tokens, consuming applications automatically receive proper theming, accessibility compliance, and future design updates. Some scenarios still require extending or overriding these defaults. The sections below explain when scoped overrides are appropriate and how to implement them safely.
Do not customize styling for Cognite Data Fusion (CDF) native apps. Cognite is developing a solution that will enable global theming across all of CDF.

Before you override anything

Ask these questions first:
  1. Does an existing token cover this use case? Check Color — there are tokens for most surfaces, text roles, borders, semantic states, and decorative colors.
  2. Is this a product-specific need or a system gap? If it feels like a system gap, raise it with Cognite — the right fix is a new token, not a one-off override.
  3. Will this hold up in both light and dark mode? Overrides that only work in one theme are a red flag.
Overrides are appropriate when:
  • You are building a Flows custom app that needs to apply a customer-facing theme on top of Aura defaults.
  • You need a one-off illustration or marketing surface that no semantic token covers.

Applying custom theme

If you are applying a customer’s brand to an app, override the smallest possible subset of base tokens. While you can update decorative tokens to heavily express a customer’s brand identity, avoid overriding semantic tokens (success, warning, error, info) unless strictly necessary. Semantic tokens carry meaning and are pre-tested for accessibility, so altering them can compromise legibility. If you must override them, follow this guidance for safe overrides:
  • Always scope to your app’s root element or a specific component — never override globally.
  • Override both light and dark values if the token is theme-sensitive.
  • Test contrast in both themes before shipping.
  • Document the override and the reason in your codebase.

Defining custom tokens

When you need to override style tokens for a Flows custom app, define them centrally in your application’s global stylesheet. This ensures your custom variables cascade down to all Aura components consistently. Place your token overrides in the src/styles.css file in the root directory of your Flows custom app. The following diff demonstrates how to apply customer brand colors to the primary and active token slots. Ensure you provide values for both the default (:root) light theme and the .dark theme context.
@import '@cognite/aura/styles.source.css';

@source '../node_modules/@cognite/aura/dist/components';

:root {
  --font-inter: "Roboto", ui-sans-serif, system-ui, sans-serif;
  --font-source-code-pro: "Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
    "Liberation Mono", "Courier New", monospace;

  /* Custom Brand Tokens - Light Mode */
  --primary-background: #5B4FD9;
  --primary-background-hover: #4338CA;
  --active-background: #DDD6FE;
  --active-background-hover: #A78BFA;
  --foreground-on-primary: #ffffff;
  --foreground-on-active: #1E1642;
  --background-fixed-dark: #1E1642;
}

.dark {
  /* Custom Brand Tokens - Dark Mode */
  --primary-background: #8B7CF8;
  --primary-background-hover: #5B4FD9;
  --active-background: #312E81;
  --active-background-hover: #1E1642;
  --foreground-on-primary: #ffffff;
  --foreground-on-active: #DDD6FE;
  --background-fixed-dark: #1E1642;
}

Scoped CSS variable overrides

If the styles are specific to a certain area in your application, use a scoped selector (for example, [data-app="my-app"]) instead of :root to avoid polluting the global namespace.
/* Scope overrides to your app's root element */
[data-app="my-app"] {
  --background: #f5f5f5;
  --primary-background: #1a1a2e;
}

Color tokens to override

Tokens are grouped by usage context. Related background, hover, foreground, and border tokens live together — so you can see how interactive states and layered tokens relate at a glance. For full resolved values, see Color.

Primary

Primary is used on the default primary button, which is your main CTA for the page.
RoleTokenOverride when
Default fillprimary-backgroundSetting the default primary action surface
Hover fillprimary-background-hoverMatching hover on primary buttons and CTAs
Foreground on fillforeground-on-primaryText and icons rendered on a primary surface

Active

Active is used on selected or active items in controls such as Checkbox, Radio, Segmented control, Switch, Progress, Pagination, and Tabs.
RoleTokenOverride when
Default fillactive-backgroundSelected items in navigation and lists to indicate exclusive selection
Hover fillactive-background-hoverHover on selected navigation items to indicate exclusive selection
Muted fillactive-muted-backgroundSubtle selected state in secondary navigation to indicate alternative, multiple selections
Muted hover fillactive-muted-background-hoverHover on muted active elements to indicate alternative, multiple selections
Foreground on fillforeground-on-activeText and icons on an active surface
Borderborder-activeBorder on active or selected elements
Inline interactive text — hyperlinks and tappable text outside of button surfaces.
RoleTokenOverride when
Defaultlink-foregroundHyperlinks and interactive inline text

Ring

Keyboard focus indicators. Override ring for brand-aligned focus; leave destructive variants unless you are theming error-state focus specifically.
RoleTokenOverride when
DefaultringFocus ring on interactive elements
Mutedring-mutedSubtle focus ring variant

Decorative

Visual differentiation for Avatar, Badge, and illustrations — color with no status meaning. Each hue is a self-contained group: override background, hover, and foreground together so text stays legible on the fill.
HueBackgroundBackground hoverForeground
Fjorddecorative-background-fjorddecorative-background-hover-fjorddecorative-foreground-fjord
Nordicdecorative-background-nordicdecorative-background-hover-nordicdecorative-foreground-nordic
Auroradecorative-background-auroradecorative-background-hover-auroradecorative-foreground-aurora
Duskdecorative-background-duskdecorative-background-hover-duskdecorative-foreground-dusk
Orangedecorative-background-orangedecorative-background-hover-orangedecorative-foreground-orange
Skydecorative-background-skydecorative-background-hover-skydecorative-foreground-sky
Mountaindecorative-background-mountaindecorative-background-hover-mountaindecorative-foreground-mountain

Chart

Semi-transparent series colors for data visualization. Each series has six levels ordered from most opaque (-color-1) to most transparent (-color-6). Override the full level set for a hue when remapping that series to the customer palette. Default series — use in sequence for unrelated categories (start with fjord).
SeriesLevel 1 (strongest)Level 2Level 3Level 4Level 5Level 6 (lightest)
Fjordchart-fjord-color-1chart-fjord-color-2chart-fjord-color-3chart-fjord-color-4chart-fjord-color-5chart-fjord-color-6
Nordicchart-nordic-color-1chart-nordic-color-2chart-nordic-color-3chart-nordic-color-4chart-nordic-color-5chart-nordic-color-6
Duskchart-dusk-color-1chart-dusk-color-2chart-dusk-color-3chart-dusk-color-4chart-dusk-color-5chart-dusk-color-6
Aurorachart-aurora-color-1chart-aurora-color-2chart-aurora-color-3chart-aurora-color-4chart-aurora-color-5chart-aurora-color-6
Orangechart-orange-color-1chart-orange-color-2chart-orange-color-3chart-orange-color-4chart-orange-color-5chart-orange-color-6
Semantic series — use only when the data carries that meaning (status, feedback, validation).
SeriesLevel 1 (strongest)Level 2Level 3Level 4Level 5Level 6 (lightest)
Infochart-info-color-1chart-info-color-2chart-info-color-3chart-info-color-4chart-info-color-5chart-info-color-6
Successchart-success-color-1chart-success-color-2chart-success-color-3chart-success-color-4chart-success-color-5chart-success-color-6
Warningchart-warning-color-1chart-warning-color-2chart-warning-color-3chart-warning-color-4chart-warning-color-5chart-warning-color-6
Errorchart-error-color-1chart-error-color-2chart-error-color-3chart-error-color-4chart-error-color-5chart-error-color-6
Neutralchart-neutral-color-1chart-neutral-color-2chart-neutral-color-3chart-neutral-color-4chart-neutral-color-5chart-neutral-color-6

Semantic

Semantic colors indicate status or meaning and are used in Badge, Alert, Banner, and Sonner toasts. Use the pre-defined Aura tokens when possible because they are tested for accessibility. If you need to override them, use the tokens in the following tables. The following tokens are paired together in semantic roles with a semantic foreground and background.
SeriesBackgroundBackground mutedBackground hoverForeground on fill
Infoinfo-backgroundinfo-muted-backgroundinfo-background-hoverinfo-foreground
Successsuccess-backgroundsuccess-muted-backgroundsuccess-background-hoversuccess-foreground
Warningwarning-backgroundwarning-muted-backgroundwarning-background-hoverwarning-foreground
Errorerror-backgrounderror-muted-backgrounderror-background-hovererror-foreground
Neutralneutral-backgroundneutral-muted-backgroundneutral-background-hoverneutral-foreground
The following tokens are for semantic foreground only and do not have a semantic background.
SeriesForeground
Infoinfo-foreground-on-info
Successsuccess-foreground-on-success
Warningwarning-foreground-on-warning
Errorerror-foreground-on-error
Neutralneutral-foreground-on-neutral

Typography tokens to override

Typefaces

TokenFontUse
--font-sans / --font-interInterMain product copy — UI text, labels, and dense interfaces
--font-monoSource Code ProCode blocks, technical strings, terminal output
--font-displaySpace GroteskDisplay fonts for splash screens, onboarding or marketing

Text (Inter)

TokenDescriptionSizeLine heightWeight
xxs/normalMetadata; short labels10px12pxRegular
xxs/mediumMetadata; short labels; emphasized10px12pxMedium
xs/normalSmall captions and chart labels12px14pxRegular
xs/mediumSmall captions and chart labels; emphasized12px14pxMedium
sm/normalSecondary text, small labels14px18pxRegular
sm/mediumSecondary text, small labels; emphasized14px18pxMedium
base/normalDefault body text16px20pxRegular
base/mediumDefault body text; emphasized16px20pxMedium
lg/normalLarge text, sub-headlines18px24pxRegular
lg/mediumLarge text, sub-headlines; emphasized18px24pxMedium
xl/normalHeadlines, small titles20px24pxRegular
xl/mediumHeadlines, small titles; emphasized20px24pxMedium
2xl/normalPage headers, titles24px28pxRegular
2xl/mediumPage headers, titles; emphasized24px28pxMedium
3xl/normalSplash screens, onboarding or login30px32pxRegular
3xl/mediumSplash screens, onboarding or login; emphasized30px32pxMedium
4xl/normalSplash screens, onboarding or login36px40pxRegular
4xl/mediumSplash screens, onboarding or login; emphasized36px40pxMedium
5xl/normalSplash screens, onboarding or login48px44pxRegular
5xl/mediumSplash screens, onboarding or login; emphasized48px44pxMedium

Code (Source Code Pro)

TokenDescriptionSizeLine heightWeight
smCode blocks, snippets, and technical strings14px18pxRegular
mdCode blocks, snippets, and technical strings16px20pxRegular
lgCode blocks, snippets, and technical strings18px24pxRegular

Building custom components

When your requirements fall outside the scope of existing Aura components, you may need to build custom UI elements. To maintain system stability and visual consistency, follow these recommended structural and architectural guidelines.

File structure

Organize your custom UI files within your application source as follows:
  • Custom components: Place in src/components/common/.
  • Static assets (images, icons): Place in src/assets/.

Extend Aura primitives

Whenever possible, build your custom components by composing Aura primitives (such as Button, Card, and Input) rather than writing raw HTML and custom CSS from scratch. Benefits of extending Aura primitives:
  • Automatic theming — Components built with Aura primitives inherit your custom design tokens. Updates to src/styles.css apply automatically to your custom UI.
  • Built-in accessibility — Primitives include baseline accessibility features, such as ARIA roles and keyboard navigation.
  • Upgrade compatibility — Custom components inherit updates to the Aura design system’s visual and layout engines, which ensures future compatibility and reduces maintenance overhead for your application.
Last modified on June 12, 2026