Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.monolex.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Hue Inheritance controls how much the theme’s Anchor Hue is “inherited” by different UI elements. This system is a combination of CORE and FLOW operations.
┌─────────────────────────────────────────────────────────────────┐
│  HUE INHERITANCE: CORE + FLOW COMBINATION                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Step 1: FLOW (Base Mixing)                                     │
│  ─────────────────────────                                      │
│  mix_in_oklab(bg, text, ratio)                                  │
│  → OkLab Cartesian space linear interpolation                   │
│  → Smooth intermediate colors without muddiness                 │
│                                                                 │
│  Step 2: CORE (Hue Inheritance)                                 │
│  ─────────────────────────────                                  │
│  blend_hue(original_hue, anchor_hue, inherit_ratio)             │
│  → OkLCH Polar space hue angle blending                         │
│  → Inject anchor's color identity                               │
│                                                                 │
│  Result: FLOW determines brightness/saturation                  │
│          CORE determines color identity                         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Inheritance Parameters

ParameterRangeDefaultPurposeType
bgHueInherit0-10.80BG inherits anchor hueCORE
bgChromaBoost0-0.020.008BG chroma additionCORE
textHueInherit0-11.00Text inherits anchor hueCORE
textChromaBoost0-0.020.00Text chroma additionCORE
borderHueInherit0-10.18Border inherits anchor hueCORE
ansiHueInherit0-0.50.08Normal ANSI inheritanceCORE
brightHueInherit0-0.50.05Bright ANSI inheritanceCORE

Why All CORE Parameters?

┌─────────────────────────────────────────────────────────────────┐
│  HUE INHERITANCE = CORE OPERATION                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  blend_hue(h1, h2, ratio) function essence:                     │
│                                                                 │
│  Input:                                                         │
│    h1 = Original hue (0-360 degrees)                            │
│    h2 = Anchor Hue (theme reference)                            │
│    ratio = Inheritance rate (0.0 - 1.0)                         │
│                                                                 │
│  Output:                                                        │
│    new_h = h1 * (1-ratio) + h2 * ratio                          │
│                                                                 │
│  This is OkLCH Polar space angle interpolation                  │
│  → Direct manipulation of color identity (Hue)                  │
│  → Typical CORE operation                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Background Hue Inheritance

Implementation Flow

BG Hue Inheritance Pipeline:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

     INPUT: bg=#1a1a2e, text=#f0f0f0


     ┌─────────────────────────────────────────────────────────┐
     │  FLOW PHASE: mix_in_oklab(bg, text, 0.04)               │
     │  ─────────────────────────────────────────              │
     │  • OkLab Cartesian space mixing                         │
     │  • bg 96% + text 4%                                     │
     │  • Result: slightly lighter base color                  │
     └─────────────────────┬───────────────────────────────────┘


     ┌─────────────────────────────────────────────────────────┐
     │  CONVERSION: hex_to_oklab → to_lch()                    │
     │  ─────────────────────────────────────                  │
     │  • Cartesian (L, a, b) → Polar (L, C, H)                │
     │  • Transition from FLOW to CORE space                   │
     └─────────────────────┬───────────────────────────────────┘


     ┌─────────────────────────────────────────────────────────┐
     │  CORE PHASE: blend_hue(h, anchor_hue, 0.80)             │
     │  ─────────────────────────────────────────              │
     │  • OkLCH Polar space hue interpolation                  │
     │  • Original Hue 20% + Anchor Hue 80%                    │
     │  • Result: new Hue dominated by anchor                  │
     └─────────────────────┬───────────────────────────────────┘


     ┌─────────────────────────────────────────────────────────┐
     │  CORE OUTPUT: oklch_to_hex(l, new_c, new_h)             │
     │  ─────────────────────────────────────────              │
     │  • Generate final color with new Hue                    │
     │  • Theme identity injection complete                    │
     └─────────────────────────────────────────────────────────┘


     OUTPUT: bg-secondary (background with anchor hue)

Pure Black Problem

A special case arises with pure black backgrounds.
┌─────────────────────────────────────────────────────────────────┐
│  PURE BLACK PROBLEM                                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  coreDark: #000000 (pure black)                                 │
│       |                                                         │
│  OkLab: L=0, a=0, b=0                                           │
│       |                                                         │
│  OkLCH: L=0, C=0, H=??? (undefined)                             │
│                                                                 │
│  Problem:                                                       │
│  • H = atan2(b, a) = atan2(0, 0) = undefined                    │
│  • When Chroma is 0, Hue is meaningless                         │
│  • blend_hue() cannot work properly                             │
│                                                                 │
│  After FLOW mix:                                                │
│  mix(#000000, #f0f0f0, 0.04) = #0d0d0d                          │
│  → OkLCH: L~0.05, C~0, H=undefined                              │
│  → Still cannot blend Hue                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Solution: bgChromaBoost

┌─────────────────────────────────────────────────────────────────┐
│  SOLUTION: bgChromaBoost (CORE Injection)                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Strategy:                                                      │
│  1. If Chroma is near 0, inject directly                        │
│  2. Use Anchor Hue directly (blending impossible)               │
│                                                                 │
│  Code logic:                                                    │
│  if cache.bg_chroma_boost > 0.0 {                               │
│      new_h = cache.anchor_hue;        // Direct CORE injection  │
│      new_c = c + cache.bg_chroma_boost; // Add chroma           │
│  }                                                              │
│                                                                 │
│  Example (monolex-darknight):                                   │
│  coreDark: #000000                                              │
│  bgChromaBoost: 0.012                                           │
│  anchor_hue: 250 degrees (Blue)                                 │
│       |                                                         │
│  bg-secondary:                                                  │
│    L = 0.05 (from mix)                                          │
│    C = 0.012 (injected)                                         │
│    H = 250 degrees (anchor, direct)                             │
│       |                                                         │
│  Result: very dark background with blue undertone               │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Text Hue Inheritance

100% Inheritance Meaning

Text Hue Inheritance (100%):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

text_hue_inherit = 1.0 (default)
  |
blend_hue(original_h, anchor_h, 1.0)
  |
new_h = original_h * 0.0 + anchor_h * 1.0
new_h = anchor_h (completely Anchor Hue)

Meaning:
• Text color completely follows Theme's hue
• L/C preserved from original for readability
• Only Hue matches Theme → strong visual unity

Example:
  coreLight: #f0f0f0 (neutral gray)
  anchor_hue: 250 degrees (blue)
  text_hue_inherit: 100%
      |
  text-primary: brightness preserved, Hue is blue-tinted
  text-secondary: medium brightness, Hue is blue-tinted
  text-tertiary: darker brightness, Hue is blue-tinted

Border Hue Inheritance

Borders use a special Chroma Scaling approach.
Border Chroma Scaling (CORE):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

border_hue_inherit = 0.18 (18%)
anchor_chroma = 0.05

base_chroma = 0.05
border_chroma = 0.05 + 0.18 * 0.06 = 0.0608

┌─────────────────────────────────────────────────────────────────┐
│  Border Level          Chroma        Visual Effect              │
├─────────────────────────────────────────────────────────────────┤
│  border-primary        0.0608        Subtle theme hint          │
│  border-secondary      0.0730        Slightly more visible      │
│  border-light          0.0851        Most visible theme color   │
└─────────────────────────────────────────────────────────────────┘

Why this design?
• Borders serve as UI dividers
• Too strong colors are distracting
• Progressive Chroma increase expresses depth
• Anchor Hue reflected subtly (18%)

ANSI Hue Inheritance

Normal vs Bright ANSI

ANSI TypeInheritReasoning
Normal8%Slight theme color hint
Bright5%Already bright, so less inheritance

Why Low ANSI Inheritance?

┌─────────────────────────────────────────────────────────────────┐
│  ANSI LOW INHERITANCE REASONING                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ANSI color purpose:                                            │
│  • Information delivery in ls, git, syntax highlighting         │
│  • Semantic colors: red = error, green = success                │
│  • Distortion by theme causes information loss                  │
│                                                                 │
│  Solution:                                                      │
│  • ansiHueInherit = 8% (very subtle hint only)                  │
│  • Original ANSI color identity 92% preserved                   │
│  • Harmony with theme handled by Hue Warp algorithm             │
│                                                                 │
│  Bright ANSI (5%):                                              │
│  • Bright colors already have high saturation                   │
│  • More sensitive to Hue changes                                │
│  • Less inheritance to preserve original                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Theme Inheritance Strategies

Comparison Table

ThemebgHuetextHueborderHueansiHueStrategy
monolex-night80%100%18%8%Balanced defaults
monolex-darknight100%100%20%10%Strong theme colors
monolex-forest0%100%25%15%Natural BG
dracula0%100%15%8%Preserve BG, unify text
solarized-dark0%100%25%12%Solarized philosophy
standard0%0%0%0%xterm compatible mode

Strategy Patterns

┌─────────────────────────────────────────────────────────────────┐
│  INHERITANCE STRATEGY PATTERNS                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Pattern A: Full Integration (monolex-night)                    │
│  ────────────────────────────────────────────                   │
│  • BG 80%: Strong theme color in background                     │
│  • Text 100%: Complete text unification                         │
│  • Result: Very unified visual experience                       │
│                                                                 │
│  Pattern B: Selective (monolex-forest)                          │
│  ────────────────────────────────────────────                   │
│  • BG 0%: Background keeps original (already green)             │
│  • Text 100%: Only text unified                                 │
│  • Result: Prevents excessive green, natural harmony            │
│                                                                 │
│  Pattern C: Pure (standard)                                     │
│  ────────────────────────────────────────────                   │
│  • All inheritance 0%                                           │
│  • Result: xterm compatible, pure original colors               │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Mix Ratio and Inheritance Interaction

Mix Ratio Parameters

ParameterDefaultPurpose
bgSecondaryRatio0.96bg-secondary = 96% bg + 4% text
bgTertiaryRatio0.92bg-tertiary = 92% bg + 8% text
textSecondaryRatio0.70text-secondary = 70% text + 30% bg
textTertiaryRatio0.62text-tertiary = 62% text + 38% bg

FLOW to CORE Cascade

Color Generation Cascade:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

bg-primary:   [████████████████████████████████]  coreDark (100%)
              (no FLOW, no CORE)

bg-secondary: [████████████████████████████████░░]
              │                              │
              └── FLOW: 96% bg + 4% text ────┘

              └── CORE: blend_hue(h, anchor_h, 80%)

bg-tertiary:  [████████████████████████████░░░░]
              │                          │
              └── FLOW: 92% bg + 8% text ┘

              └── CORE: blend_hue(h, anchor_h, 80%)

              └── CORE: tint(tint_hue, tint_strength)

At each step:
1. FLOW determines brightness/saturation first
2. CORE applies color identity after

THE CENTER

How Hue Inheritance Helps Information Flow

The Hue Inheritance system directly serves Core-Flow’s mission of using color to help humans parse information.
Connection to Core-Flow:
├── Visual Hierarchy: Different inheritance levels create depth
│   → Users can distinguish primary from secondary from tertiary
├── Theme Identity: High text inheritance (100%) ensures brand
│   → Immediate recognition of "my terminal"
├── Information Preservation: Low ANSI inheritance (8%)
│   → Error/success semantics preserved
└── Flexible Strategies: Per-theme customization
    → Different use cases supported (dev, design, accessibility)
The FLOW + CORE combination achieves:
  • Perceptual accuracy (FLOW): mix_in_oklab provides uniform mixing
  • Color identity (CORE): blend_hue injects theme hue
  • Independent control: Mix ratios and inheritance rates adjust separately

Rust and TypeScript Implementation

Compare the dual implementation across languages