Foundations
Colors
The FSAI color system provides raw color palettes and semantic tokens for consistent UI styling.
Overview
The color system is defined in packages/config-tailwind/theme.css and follows a two-layer approach:
- Raw color palettes — Numbered scales for gray (16 steps) and five chromatic colors (12 steps each)
- Semantic tokens — Purpose-driven aliases that reference the raw palette, used throughout application code
Always prefer semantic tokens over raw color values. For example, use text-strong instead of text-gray-16-light.
Raw Color Palettes
Gray (16 steps)
01
#FFFFFF02
#F7F7F703
#F3F3F304
#E5E5E505
#D9D9D906
#CCCCCC07
#BFBFBF08
#A6A6A609
#95959510
#82828211
#6F6F6F12
#5C5C5C13
#4D4D4D14
#36363615
#26262616
#191919Blue (12 steps)
01
#FAFBFF02
#E8EFFB03
#D1E2FD04
#A5C4FB05
#76A0F506
#5381EB07
#1F54DE08
#1640BE09
#0F2F9F10
#09208011
#05166A12
#000E33Green (12 steps)
01
#FAFFFA02
#F1FCE703
#E6FBD304
#C8F8A905
#9EEC7B06
#75D95807
#3FC12808
#27A51D09
#148A1410
#0C6F1411
#075C1512
#083300Red (12 steps)
01
#FFFCFA02
#FFF0E503
#FFE5D204
#FFC4A605
#FF9D7A06
#FF765907
#FF372008
#B7101B09
#A4131B10
#930A1E11
#7B062012
#330500Orange (12 steps)
01
#FFFCFA02
#FFF6E003
#FFF1CC04
#FEE09A05
#FECA6706
#FDB44307
#FC910508
#D8720309
#B4580110
#91400111
#772F0012
#331C00Yellow (12 steps)
01
#FFFDF502
#FFF8E003
#FFF3CC04
#FFE89905
#FFD96606
#FFCA3307
#FFB80008
#D69A0009
#B37D0010
#8F630011
#754F0012
#332300Semantic Tokens
Text Colors
Use these for all text content. The Tailwind class is what you use in your code.
| Class | Purpose | Raw Token |
|---|---|---|
text-strong | Headings, emphasized text (darkest) | gray-16 #191919 |
text-regular | Standard body text | gray-15 #262626 |
text-subtle | Secondary/supporting text | gray-13 #4D4D4D |
text-minimal | Tertiary/helper text (lightest) | gray-12 #5C5C5C |
text-contrast | Text on dark backgrounds | gray-01 #FFFFFF |
text-brand | Links, brand-colored text | blue-07 #1F54DE |
text-warning | Warning text | orange-08 #D87203 |
text-positive | Success text | green-08 #27A51D |
text-destructive | Error/destructive text | red-08 #B7101B |
Icon Colors
| Class | Purpose | Raw Token |
|---|---|---|
text-icon-strong | Emphasized icons | gray-16 #191919 |
text-icon-default | Standard icons | gray-14 #363636 |
text-icon-subtle | De-emphasized icons | gray-12 #5C5C5C |
text-icon-muted | Least prominent icons | gray-10 #828282 |
text-icon-disabled | Disabled state icons | gray-14 @ 50% opacity |
text-icon-contrast | Icons on dark backgrounds | gray-01 #FFFFFF |
Background Colors
| Class | Purpose | Raw Token |
|---|---|---|
bg-surface | Main content surface | gray-01 #FFFFFF |
bg-subtle | Slightly tinted surface | gray-02 #F7F7F7 |
bg-accent | Hover states, lightly emphasized areas | gray-03 #F3F3F3 |
bg-strong | More prominent backgrounds | gray-04 #E5E5E5 |
bg-base | Base page background | gray-01 #FFFFFF |
bg-elevated | Elevated cards/panels | gray-03 #F3F3F3 |
bg-emphasis | Strongly emphasized areas | gray-04 #E5E5E5 |
bg-disabled | Disabled state backgrounds | gray-14 @ 5% opacity |
bg-contrast | High contrast (dark) backgrounds | gray-15 #262626 |
bg-sidebar | Sidebar background | gray-03 #F3F3F3 |
bg-navbar | Navbar background | gray-16 #191919 |
Border Colors
| Class | Purpose | Raw Token |
|---|---|---|
border-strong | Prominent borders | gray-04 #E5E5E5 |
border-default | Standard borders | gray-03 #F3F3F3 |
border-alpha-strong | Semi-transparent prominent borders | gray-14 @ 20% |
border-alpha-default | Semi-transparent standard borders | gray-14 @ 15% |
border-disabled | Disabled state borders | gray-14 @ 5% |
border-contrast | High contrast (dark) borders | gray-16 #191919 |
Status / Accent Colors
Used for focus rings, success/warning/error borders and backgrounds.
| Class | Purpose | Raw Token |
|---|---|---|
border-focus / ring-focus | Focus ring styling | blue-06 #5381EB |
border-warning | Warning border | orange-06 #FDB443 |
border-positive | Success border | green-06 #75D958 |
border-destructive | Error/destructive border | red-06 #FF7659 |
Per-Color Semantic Tokens
Each chromatic color has a set of semantic tokens for backgrounds, text, and icons:
| Pattern | Example Classes | Purpose |
|---|---|---|
bg-{color}-bg-surface | bg-blue-bg-surface, bg-red-bg-surface | Light tinted surface |
bg-{color}-bg-subtle | bg-green-bg-subtle | Very light tinted surface |
bg-{color}-bg-accent | bg-orange-bg-accent | Medium emphasis background |
bg-{color}-bg-strong | bg-blue-bg-strong | Strong emphasis background |
text-{color}-text | text-green-text, text-red-text | Colored text |
text-{color}-icon | text-blue-icon | Colored icons |
Usage Guidelines
- Do use semantic tokens (
text-strong,bg-surface) in application code - Do reference raw palette steps only in the theme configuration itself
- Don't hardcode hex values in component styles
- Don't use raw palette tokens like
text-gray-16-lightdirectly — use the semantic aliastext-stronginstead