/
Dark Light
System
Default LBBW Jira Confluence Source Code
Share
Playground

Color #

The aFP Design System is built on CSS custom properties, ensuring consistent color usage throughout your project.

Colors are grouped into four main categories:

  • Base Colors – structured palettes with a full range of tints (e.g., Base, Shade)
  • Brand Colors – semantic colors that convey meaning and state (e.g., Neutral, Error, Success)
  • Foundational Colors – role-based tokens used directly in themes (e.g., Text, Link)
  • Semantic Colors – additional colors for specific use cases (e.g., Data Visualization)
  • Color Creator – interactively generate a custom color scale

Each palette (such as base, red, or accent) is defined by a hue and saturation. From these values, lightness steps are generated from 50 (lightest) to 900 (darkest).

The naming convention follows:

--afp-color-{name}-{tint}

Base Colors #

Base colors provide a full spectrum of tints within each palette. They form the foundation of the design system and are applied to backgrounds, borders, and typography to establish hierarchy and maintain accessible contrast.


Brand Colors #

Brand colors are semantic tokens used to communicate meaning and context in the UI. They highlight states, actions, and feedback, helping users quickly interpret importance and intent.


Foundational Colors #

Foundational colors are role-based tokens that provide structure and readability across your theme.

Body #

Body colors define the primary surface and background of your application.
They ensure consistent contrast and readability for all other visual elements placed on top.

Custom Property Preview
--afp-color-body
--afp-color-body-dark
--afp-color-code

Surfaces #

Surface colors define the visual layers of your interface.
They help establish depth and hierarchy by differentiating between background levels such as base, elevated, or lowered areas.

Custom Property Description Preview
--afp-color-surface-default Default background surface, used for primary content areas.
--afp-color-surface-elevated Slightly lighter or higher surface, often used for panels, hovers or dialogs.
--afp-color-surface-lowered Slightly darker or recessed surface, used for footers or nested content sections.
--afp-color-surface-border Used for surface outlines, separators, or structural borders.
--afp-color-surface-border-subtle Softer, lower-contrast border for popovers, overlays, lightweight dividers or fine outlines.

Text #

Text colors are used for standard text elements.

Custom Property Preview
--afp-color-text
AaBb
--afp-color-text-quiet
AaBb
--afp-color-link
AaBb
--afp-color-link-hover
AaBb

Overlay #

Overlays provide a backdrop to isolate content, often allowing background context to show through.

Custom Property Preview
--afp-color-modal

Shadow #

aFP Design System uses a single color for all shadows.
This is used alongside other shadow tokens to construct your theme's shadows.

Custom Property Preview
--afp-color-shadow

Focus #

aFP Design System uses a single color for predictable keyboard navigation on all non-input elements.
Input elements use --afp-color-focus-input alongside other focus tokens to construct your theme’s focus styling.

Custom Property Preview
--afp-color-focus
--afp-color-focus-input
--afp-color-focus-input-border

Border #

Borders use a single color to ensure consistency across components.
This is used alongside other border tokens to construct your theme's borders.

Custom Property Preview
--afp-color-border

Hover and Active #

In the brand palette, hover states are derived by mixing the base value (40) with a lighter step (30).
This approach keeps states harmonized across components while reducing the need for custom overrides.


Semantic Colors #

Semantic colors reinforce specific messages, intended usage, or expected results through familiar, meaningful hues. Each color is identified by its semantic group, role, and attention level using the format:

--afp-color-{group}-{role}-{attention}

Group #

The semantic color system is organized into the following color groups:

  • brand – emphasizes your brand identity and primary actions.
  • neutral – represents ordinary or inactive content, backgrounds, or secondary UI elements.
  • accent – highlights important elements without being part of the core brand palette.
  • success – indicates successful actions, positive feedback, or validation.
  • warning – signals caution, potential risks, or intermediate alerts.
  • error – communicates errors, problems, or destructive actions.
  • info – used for very subtle UI elements, disabled states, or low-priority content.

Role #

Each semantic color is defined for a specific role in the UI:

  • fill – used for background colors, large areas, or surfaces.
  • border – used for borders, dividers, or other stroke-width elements.
  • text – used for text, icons, or any content displayed on a fill.

This separation ensures that contrast and accessibility are predictable and consistent across the UI.


Attention #

Colors are further categorized by the level of attention they draw:

  • subtle – slightly more attention than quiet, often used for hover states or low-priority highlights.
  • quiet – draws the least attention, ideal for subtle backgrounds, inactive states, or secondary borders.
  • normal – standard attention level, suitable for primary content and borders.
  • loud – draws the most attention, ideal for critical surfaces, strong borders, or high-emphasis text.

Examples #

All custom properties in this table actually use the prefix --afp-. For example, --afp-color-brand-fill-quiet corresponds to the brand-fill-quiet cell in the table. The prefix is omitted in the table column for readability.

Custom Property neutral brand accent info warning success error
*-fill-quiet
*-fill-subtle
*-fill-normal
*-fill-loud
*-border-quiet
*-border-subtle
*-border-normal
*-border-loud
*-text-quiet
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
*-text-subtle
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
*-text-normal
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
*-text-loud
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb
AaBb

CSS Classes #

Colors can also be applied using utility-style CSS classes. These classes map directly to the underlying color tokens and are generated at build time.

The syntax follows a simple pattern: afp-{context}:{color}


Example #

Example
<div 
  class="
    afp-padding:space-m
    afp-border-s
    afp-border:surface-border
    afp-text:text
    afp-background:surface-elevated
  "
>
  Example
</div>
<div 
  class="
    afp-padding:space-m
    afp-border-s
    afp-border:surface-border
    afp-text:text
    afp-background:surface-elevated
  "
>
  Example
</div>
<div 
  class="
    afp-padding:space-m
    afp-border-s
    afp-border:surface-border
    afp-text:text
    afp-background:surface-elevated
  "
>
  Example
</div>
<div 
  class="
    afp-padding:space-m
    afp-border-s
    afp-border:surface-border
    afp-text:text
    afp-background:surface-elevated
  "
>
  Example
</div>

In this example:

  • the border uses --afp-color-surface-border
  • the background uses --afp-color-surface-elevated
  • the text uses --afp-color-text

Contexts #

Context Applies to
afp-background Background color
afp-border Border color
afp-text Text color

Color Creator #

Pick a base color to generate a full 10-step scale. The preview updates live — copy the CSS variables and paste them into your theme override to apply the new palette.

base red orange yellow green blue purple pink shade tint deep-jade lavender arctic

    
      Copy CSS
    
  
esc
Share
Create a link with a predefined theme that is automatically applied when the generated link is opened. Default LBBW Presentation Mode
Abort Copy Link