Skip to content

Component tokens ​

Component tokens are named for a control (for example --catnip-button-radius) but defined on :root in @signicat/catnip-design-tokens. Themes override the same variables; component SCSS only consumes them.

For the theming rules and EndUI / whitelabel activation, see Theming — Component tokens and Theming — EndUI.

Pattern ​

  1. Defaults always exist on :root (Signicat look).
  2. Themes (for example EndUI) override the same CSS variables under [data-theme="…"].
  3. Use a leaf name first: button.radius → --catnip-button-radius. Add a suffix only when a second value is needed (button.radius.utility → --catnip-button-radius-utility).
  4. Prefer semantic color tokens for color; add component color tokens only when a control needs a mapping semantic cannot express.

Source JSON lives under packages/design-tokens/src/tokens/component/.

Shipped tokens ​

TokenDefault (:root)EndUI (data-theme="endui")Used by
--catnip-button-radiusvar(--catnip-radius-round)var(--catnip-radius-s)Button with purpose="main"
--catnip-graphic-primaryvar(--catnip-color-brand-900)follows brand remap when data-theme="endui" is on <html>, or when the page loads css/endui-scopedGraphic main / line art (Brand 100 in dark)
--catnip-graphic-accentvar(--catnip-color-accent-300)follows accent remap (--catnip-color-accent-300 is Steel 200)Graphic accent fills (Brand 600 in dark)
--catnip-logo-backgroundvar(--catnip-color-brand-900)follows brand remap when data-theme="endui" is on <html>, or when the page loads css/endui-scopedSignicat lockup blob (+ adjacent product name)
--catnip-logo-contentvar(--catnip-color-base-white)sameLetter fills on the logo background
--catnip-hero-primaryvar(--catnip-color-brand-900)follows brand remap when data-theme="endui" is on <html>, or when the page loads css/endui-scopedHero illustration primary fills
--catnip-hero-accentvar(--catnip-color-accent-300)follows accent remap (--catnip-color-accent-300 is Steel 200)Hero illustration accent fills
--catnip-hero-strokevar(--catnip-color-base-white)sameHero illustration strokes

Button purpose="utility" still uses the global --catnip-radius-s scale step. A second component token (for example --catnip-button-radius-utility) is only added if a theme needs to diverge from that.

Graphics use --catnip-graphic-primary for primary and --catnip-graphic-accent for accent (Signicat Brand 900 purple by default). Override those same variables on the host or an ancestor when you need a one-off.

Hero illustrations use --catnip-hero-primary, --catnip-hero-accent, and --catnip-hero-stroke. Light and dark share those values (Brand 900, Accent 300, white). EndUI still remaps primary and accent through brand and --catnip-color-accent-300.

Signicat logos under illustrations/signicat-logos/ paint with --catnip-logo-background / --catnip-logo-content. Defaults are purple + white (light page). On a brand navbar, override the same two variables:

css
.brand-nav {
  --catnip-logo-background: var(--catnip-color-content-on-primary);
  --catnip-logo-content: var(--catnip-color-background-primary-strong);
}

That yields a white logo with letters matching the brand surface (knockout). The SVG must be inlined (e.g. catnip-graphic) for the CSS variables to apply.

Catnip Design System by Signicat