Skip to main content

What Are Semantic Colors?

Semantic colors convey MEANING, not decoration. They tell users what is happening in the system at a glance.
+-----------------------------------------------------------------------------+
|                    THE FIVE SEMANTIC COLORS                                  |
+-----------------------------------------------------------------------------+
|                                                                             |
|   PRIMARY (Blue)                                                            |
|   +------------------------------------------------------------------+      |
|   |  Meaning:  Main action, brand identity                           |      |
|   |  Usage:    [Save] [Submit] [Continue] buttons, links             |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
|   SUCCESS (Green)                                                           |
|   +------------------------------------------------------------------+      |
|   |  Meaning:  Positive outcome, active state                        |      |
|   |  Usage:    "Saved successfully", "Running", "Connected"          |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
|   DANGER (Red)                                                              |
|   +------------------------------------------------------------------+      |
|   |  Meaning:  Error, destructive action, critical issue             |      |
|   |  Usage:    [Delete], "Error occurred", "Disconnected"            |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
|   WARNING (Yellow)                                                          |
|   +------------------------------------------------------------------+      |
|   |  Meaning:  Caution, pending action                               |      |
|   |  Usage:    "Unsaved changes", "Pending", "Action required"       |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
|   INFO (Soft Blue)                                                          |
|   +------------------------------------------------------------------+      |
|   |  Meaning:  Neutral information, tips                             |      |
|   |  Usage:    Tooltips, helper text, informational badges           |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
+-----------------------------------------------------------------------------+

Color Intensity Hierarchy

Different semantic colors have different visual “weight” based on their urgency:
+-----------------------------------------------------------------------------+
|                    VISUAL WEIGHT HIERARCHY                                   |
+-----------------------------------------------------------------------------+
|                                                                             |
|   STRONGEST                                               WEAKEST           |
|   |                                                            |            |
|   v                                                            v            |
|                                                                             |
|   +-----------+  +-----------+  +-----------+  +-----------+               |
|   |  DANGER   |  | PRIMARY   |  | SUCCESS   |  |   INFO    |               |
|   |           |  | WARNING   |  |           |  |           |               |
|   |   OOOO    |  |   OOO     |  |   OOO     |  |    OO     |               |
|   |  OOOOOO   |  |  OOOOO    |  |  OOOOO    |  |    OO     |               |
|   | OOOOOOOO  |  | OOOOOO    |  | OOOOOO    |  |   OOO     |               |
|   |OOOOOOOOOO |  |OOOOOOO    |  |OOOOOOO    |  |   OOO     |               |
|   |           |  |           |  |           |  |           |               |
|   | Highest   |  | Standard  |  | Standard  |  | Softest   |               |
|   | Intensity |  | Intensity |  | Intensity |  | Intensity |               |
|   +-----------+  +-----------+  +-----------+  +-----------+               |
|                                                                             |
|   DANGER grabs attention FIRST - that is intentional.                       |
|   INFO recedes - it is helpful but not urgent.                              |
|                                                                             |
+-----------------------------------------------------------------------------+

The OKLCH Values

+-----------------------------------------------------------------------------+
|                    SEMANTIC COLOR SPECIFICATIONS                             |
+-----------------------------------------------------------------------------+
|                                                                             |
|   Color       Lightness    Chroma     Hue        Why These Values?          |
|   -----------------------------------------------------------------------   |
|                                                                             |
|   PRIMARY     55%          0.15       230        Standard weight,           |
|                                       (Blue)     trustworthy color          |
|                                                                             |
|   SUCCESS     55%          0.15       130        Standard weight,           |
|                                       (Green)    positive association        |
|                                                                             |
|   DANGER      55%          0.18       25         HIGHER chroma (0.18)       |
|                                       (Red)      demands attention          |
|                                                                             |
|   WARNING     65%          0.15       85         HIGHER lightness (65%)     |
|                                       (Yellow)   compensates for yellow     |
|                                                                             |
|   INFO        55%          0.12       230        LOWER chroma (0.12)        |
|                                       (Blue)     gentler, less urgent       |
|                                                                             |
+-----------------------------------------------------------------------------+
|                                                                             |
|   NOTE: Danger uses higher chroma because errors need to stand out.         |
|         Warning uses higher lightness because yellow appears dark otherwise.|
|         Info uses lower chroma because it should not compete for attention. |
|                                                                             |
+-----------------------------------------------------------------------------+

Derived States: Hover and Muted

Every semantic color has derived states for interactions:
+-----------------------------------------------------------------------------+
|                    HOVER STATES                                              |
+-----------------------------------------------------------------------------+
|                                                                             |
|   When user hovers, the color BRIGHTENS (adds white):                       |
|                                                                             |
|   +------------------------------------------------------------------+      |
|   |                                                                  |      |
|   |   Normal:   [=========]                                          |      |
|   |   Hover:    [============]  (+15% white)                         |      |
|   |                                                                  |      |
|   |   Exception: Warning only uses +10% white                        |      |
|   |   (Yellow is already bright, more white would wash it out)       |      |
|   |                                                                  |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
+-----------------------------------------------------------------------------+
|                    MUTED STATES                                              |
+-----------------------------------------------------------------------------+
|                                                                             |
|   For backgrounds, colors become semi-transparent:                          |
|                                                                             |
|   +------------------------------------------------------------------+      |
|   |                                                                  |      |
|   |   Full:     [XXXXXXXXXXXX]  100% opacity                         |      |
|   |   Muted:    [............]  20% opacity (80% transparent)        |      |
|   |                                                                  |      |
|   |   The color stays recognizable, just softer.                     |      |
|   |   Used for: Badge backgrounds, notification backgrounds          |      |
|   |                                                                  |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
+-----------------------------------------------------------------------------+

Status Badge Pattern

Status badges use a three-layer composition:
+-----------------------------------------------------------------------------+
|                    STATUS BADGE ANATOMY                                      |
+-----------------------------------------------------------------------------+
|                                                                             |
|   +------------------------------------------------------------------+      |
|   |                                                                  |      |
|   |   +------------------------------------------------------+       |      |
|   |   |                                                      |       |      |
|   |   |   +------------------------------------------+       |       |      |
|   |   |   |                                          |       |       |      |
|   |   |   |          SUCCESS TEXT                    |       |       |      |
|   |   |   |                                          |       |       |      |
|   |   |   +------------------------------------------+       |       |      |
|   |   |         (Text: Full color)                           |       |      |
|   |   |                                                      |       |      |
|   |   +------------------------------------------------------+       |      |
|   |         (Background: 20% opacity of same color)                  |      |
|   |                                                                  |      |
|   +------------------------------------------------------------------+      |
|         (Border: Full color, 1px)                                           |
|                                                                             |
|                                                                             |
|   THREE LAYERS:                                                             |
|   1. Border:     Full semantic color (defines the edge)                     |
|   2. Background: 20% opacity (subtle fill)                                  |
|   3. Text:       Full semantic color (readable on the background)           |
|                                                                             |
+-----------------------------------------------------------------------------+

Terminal Color Synchronization

Semantic colors match ANSI terminal colors for consistency:
+-----------------------------------------------------------------------------+
|                    UI AND TERMINAL ALIGNMENT                                 |
+-----------------------------------------------------------------------------+
|                                                                             |
|   When terminal output shows an error in red, and a UI badge shows          |
|   "Error" in the danger color, they should look THE SAME.                   |
|                                                                             |
|   +------------------------------------------------------------------+      |
|   |  Terminal Output:                                                |      |
|   |  > npm ERR! [RED] Module not found                               |      |
|   |                                                                  |      |
|   |  UI Badge:                                                       |      |
|   |  [RED ERROR BADGE]                                               |      |
|   |                                                                  |      |
|   |  SAME RED = User instantly understands the connection            |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
|   MAPPINGS:                                                                 |
|   +------------------------------------------------------------------+      |
|   |  Semantic        ANSI Terminal                                   |      |
|   |  ---------------------------------------------------------       |      |
|   |  Primary (Blue)  ANSI Blue                                       |      |
|   |  Success (Green) ANSI Green                                      |      |
|   |  Danger (Red)    ANSI Red                                        |      |
|   |  Warning (Yellow) ANSI Yellow                                    |      |
|   +------------------------------------------------------------------+      |
|                                                                             |
+-----------------------------------------------------------------------------+

Accessibility: Dark vs Light Themes

+-----------------------------------------------------------------------------+
|                    VISIBILITY ON DARK BACKGROUND                             |
+-----------------------------------------------------------------------------+
|                                                                             |
|   Background: Black (L = 0%)                                                |
|                                                                             |
|   Color           Lightness    Contrast    Visible?                         |
|   ---------------------------------------------------------                 |
|   Primary         55%          55%         Yes                              |
|   Success         55%          55%         Yes                              |
|   Danger          55%          55%         Yes                              |
|   Warning         65%          65%         Excellent                        |
|   Info            55%          55%         Yes                              |
|                                                                             |
|   All colors stand out clearly on dark backgrounds.                         |
|                                                                             |
+-----------------------------------------------------------------------------+
|                    VISIBILITY ON LIGHT BACKGROUND                            |
+-----------------------------------------------------------------------------+
|                                                                             |
|   Background: White (L = 100%)                                              |
|                                                                             |
|   Color           Lightness    Contrast    Visible?                         |
|   ---------------------------------------------------------                 |
|   Primary         55%          45%         Acceptable                       |
|   Success         55%          45%         Acceptable                       |
|   Danger          55%          45%         Acceptable                       |
|   Warning         65%          35%         Marginal (needs dark text)       |
|   Info            55%          45%         Acceptable                       |
|                                                                             |
|   Warning on light backgrounds needs DARK TEXT to be readable.              |
|   This is the ONLY semantic color override between themes.                  |
|                                                                             |
+-----------------------------------------------------------------------------+

Key Takeaways

+-----------------------------------------------------------------------------+
|                                                                             |
|   1. Five semantic colors: Primary, Success, Danger, Warning, Info          |
|                                                                             |
|   2. Danger has the highest intensity (0.18 chroma)                         |
|      - Errors demand attention                                              |
|                                                                             |
|   3. Warning has higher lightness (65%)                                     |
|      - Compensates for yellow appearing dark naturally                      |
|                                                                             |
|   4. Info has the lowest intensity (0.12 chroma)                            |
|      - Helpful but not urgent                                               |
|                                                                             |
|   5. Status badges use 3 layers: border, background (20%), text             |
|                                                                             |
|   6. UI colors match terminal ANSI colors for consistency                   |
|                                                                             |
|   7. Only Warning needs a theme override (dark text on light theme)         |
|                                                                             |
+-----------------------------------------------------------------------------+

CSS Variables

Learn how these colors are organized in CSS