EEnterUI
DocsComponentsThemesDonation
Get Started
  • TokensDesign tokens that drive every component.
  • Agent Guide
  • Changelog
EnterUIDocsResourcesTokens
ResourcesUpdated 6 May 2026

Tokens

Design tokens published by FroggDesign and consumed by every EnterUI component.

Tokens defines how EnterUI handles design tokens published by froggdesign and consumed by every enterui component, including default structure, accessible states, and token-driven styling.

Foundation

Tokens are the contract between FroggDesign and EnterUI. They define color, type, spacing, radius, shadow, and surface behavior once, then let every component inherit the same visual decisions across light mode, dark mode, and custom product themes.

Raw tokens@froggdesign/tokensTheme variables@froggdesign/themeComponent aliases@froggdesign/enter-ui-react

#Two layers

Theme layer--fd-*

Source-of-truth CSS variables for FroggDesign. This is where apps override brand, surface, typography, spacing, radius, shadow, and semantic state.

Component layer--eui-*

EnterUI-facing aliases that map to --fd-* by default, so components stay portable without hard-coding visual values.

Two layers exist so apps can re-skin EnterUI without touching implementation classes or component source. Override a token once, and every state that reads it stays aligned.

#Categories

Color

Brand greens, neutrals, and accents that carry product hierarchy.

Read more

Semantic color

Success, warning, error, info, and the crimson/ruby destructive pair.

Read more

Typography

Geist + Inter scale across body, label, and heading sizes.

Read more

Spacing

A 4px-based scale from --fd-space-1 through --fd-space-24.

Read more

Radius

Sharp xs through pill full for cards, inputs, and chips.

Read more

Shadow

Card, elevated, modal, and floating-button elevations only when depth has a job.

Read more

Glass / surface

Subtle frosted surfaces for navbars, popovers, and command palettes.

Read more

#Color

Color tokens establish hierarchy before component styling begins. Neutrals carry the page, surfaces, text, and borders. Green remains a small brand signal, not the default fill for the UI.

Charcoal#0F172A
Blue gray#334155
Mist#F1F5F9
Brand green#5EC551
Code
:root {
  --fd-color-brand-green: #5ec551;
  --fd-color-neutral-charcoal: #0f172a;
  --fd-color-neutral-blue-gray: #334155;
  --fd-color-neutral-almost-white: #f8fafc;
}

#Semantic color

Semantic tokens communicate state without competing with brand green. Each state has a strong value for edges/text and a soft value for quiet surfaces.

SuccessPositive completion
WarningNeeds attention
ErrorValidation failure
InfoSupporting context
RubyDestructive depth
Code
:root {
  --fd-success: #2f9e44;
  --fd-warning: #b7791f;
  --fd-error: #dc143c;
  --fd-info: #0e7490;
  --fd-ruby: #9b111e;
}

#Typography

Typography tokens keep documentation, product UI, and component examples on the same scale. Headings create structure, body copy explains, and label/caption sizes keep dense controls readable.

HeadingFroggDesign Tokens--fd-font-size-h1
Body
Readable product documentation with enough rhythm for long pages.
--fd-font-size-body
LabelCONTROL LABEL--fd-font-size-label
Code
:root {
  --fd-font-size-body: 16px;
  --fd-font-size-body-small: 15px;
  --fd-font-size-label: 14px;
  --fd-font-size-caption: 13px;
}

#Spacing

Spacing uses a predictable 4px-based scale. Dense controls use smaller steps, while docs sections, cards, and product layouts use larger steps for rhythm and scanability.

space-1
space-2
space-4
space-6
space-10
Code
:root {
  --fd-space-1: 4px;
  --fd-space-2: 8px;
  --fd-space-4: 16px;
  --fd-space-6: 24px;
  --fd-space-10: 40px;
}

#Radius

Radius tokens keep shapes consistent across controls, cards, dialogs, badges, and navigation. Use medium radius for product controls and larger radius only for larger surfaces.

sm
md
lg
full
Code
:root {
  --fd-radius-sm: 6px;
  --fd-radius-md: 8px;
  --fd-radius-lg: 12px;
  --fd-radius-full: 999px;
}

#Shadow

Shadow tokens add depth only when a surface needs separation. Use subtle shadows for cards, stronger elevation for overlays, and colored button shadow only where interaction needs emphasis.

Card soft
Elevated
Modal
Code
:root {
  --fd-shadow-card-soft: 0 10px 30px -24px rgba(15, 23, 42, 0.35);
  --fd-shadow-card-elevated: 0 24px 60px -40px rgba(15, 23, 42, 0.45);
  --fd-shadow-modal: 0 32px 80px -42px rgba(15, 23, 42, 0.5);
}

#Glass surface

Glass and surface tokens are for restrained depth in navbars, popovers, command palettes, and docs chrome. Use them sparingly so content remains the focus.

Raised surfaceCommand palette
Subtle blur, quiet border, and a restrained shadow.
Code
:root {
  --fd-glass-surface-strong: rgba(255, 255, 255, 0.86);
  --fd-glass-border-soft: rgba(148, 163, 184, 0.28);
  --fd-glass-blur-sm: 12px;
}

#Theme defaults

Every variable below is set in @froggdesign/theme/styles.css. Apps can import the file once and consume the tokens everywhere.

Code
:root {
  --fd-primary: #334155;
  --fd-background: #f8fafc;
  --fd-foreground: #0f172a;
  --fd-error: #dc143c;
  --fd-ruby: #9b111e;
}

#Override strategy

Re-define variables on :root or any scoped selector after the theme import. Components inside that scope inherit the new values automatically.

app/globals.css
@import "@froggdesign/theme/styles.css";
@import "@froggdesign/enter-ui-react/styles.css";

:root {
  --fd-primary: #1f2937;
  --fd-radius-md: 8px;
}

[data-theme="dark"] {
  --fd-primary: #91d851;
}

For local rebrands, scope overrides to a className instead of :root:

Code
.brand-billing {
  --eui-color-brand-green: #6366f1;
  --eui-error: #f97316;
}

Override tokens, not components

Always re-define the underlying CSS variable rather than hard-coding a color or radius on a component. Token overrides flow through every state and stay consistent between light and dark mode. Hard-coded styles drift.

#Principles

  • Neutral first. Charcoal and slate carry the interface. Green is a signal, not a fill.
  • Green as signal. --fd-color-brand-green appears for selected states, primary actions, and successful moments. It never dominates a page.
  • Crimson and ruby for error. --fd-error drives invalid borders and focus rings; --fd-ruby handles destructive actions like Delete.
  • Token-driven styling. Components never hard-code colors or sizes. The token layer is the source of truth across light, dark, and bespoke product themes.

#Next steps

Move on to the Theming guide for the complete override reference, or read the Styling Philosophy for how the token system fits together with className and CSS Modules.

PreviousVisuallyHidden
NextAgent Guide

On this page

  1. Two layers
  2. Categories
  3. Color
  4. Semantic color
  5. Typography
  6. Spacing
  7. Radius
  8. Shadow
  9. Glass surface
  10. Theme defaults
  11. Override strategy
  12. Principles
  13. Next steps