Skip to main content

Syntax Spectrum

Each programming language has its own visual identity.
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  TRADITIONAL SYNTAX HIGHLIGHTING                                β”‚
β”‚                                                                 β”‚
β”‚  .ts file:                          .py file:                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ const x = "hello";     β”‚        β”‚ x = "hello"            β”‚  β”‚
β”‚  β”‚   ^^^^^   ^^^^^^^^     β”‚        β”‚ ^   ^^^^^^^^           β”‚  β”‚
β”‚  β”‚   BLUE    GREEN        β”‚        β”‚ BLUE GREEN             β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                 β”‚
β”‚  Problem: ALL files use the SAME colors                         β”‚
β”‚           TypeScript looks just like Python                     β”‚
β”‚                                                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  SYNTAX SPECTRUM                                                β”‚
β”‚                                                                 β”‚
β”‚  .ts file (SEED: Blue):             .py file (SEED: Green):     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ const x = "hello";     β”‚        β”‚ x = "hello"            β”‚  β”‚
β”‚  β”‚   ^^^^^   ^^^^^^^^     β”‚        β”‚ ^   ^^^^^^^^           β”‚  β”‚
β”‚  β”‚   230 deg  257.5 deg   β”‚        β”‚ 130 deg 157.5 deg      β”‚  β”‚
β”‚  β”‚   (blue)  (blue-purple)β”‚        β”‚ (green) (teal)         β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                 β”‚
β”‚  Solution: Each file type has its OWN color world               β”‚
β”‚            TypeScript = "Blue World"                            β”‚
β”‚            Python = "Green World"                               β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Blue World and Green World

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  TYPESCRIPT: THE BLUE WORLD                                     β”‚
β”‚                                                                 β”‚
β”‚  SEED = oklch(55% 0.15 230)  -- Blue                            β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  1 | const greeting: string = "Hello";                  β”‚   β”‚
β”‚  β”‚  2 | function sayHello(): void {                        β”‚   β”‚
β”‚  β”‚  3 |   console.log(greeting);  // output                β”‚   β”‚
β”‚  β”‚  4 |   return 42;                                       β”‚   β”‚
β”‚  β”‚  5 | }                                                  β”‚   β”‚
β”‚  β”‚    |     ^         ^       ^      ^                     β”‚   β”‚
β”‚  β”‚    |  keyword    type   string  comment                 β”‚   β”‚
β”‚  β”‚    |  (230deg)  (340deg)  (257deg)  (gray-blue)         β”‚   β”‚
β”‚  β”‚    |                                                    β”‚   β”‚
β”‚  β”‚    |  All colors derive from 230deg (Blue)              β”‚   β”‚
β”‚  β”‚    |  Opening this file = entering a "blue world"       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  PYTHON: THE GREEN WORLD                                        β”‚
β”‚                                                                 β”‚
β”‚  SEED = oklch(55% 0.15 130)  -- Green                           β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  1 | greeting: str = "Hello"                            β”‚   β”‚
β”‚  β”‚  2 | def say_hello() -> None:                           β”‚   β”‚
β”‚  β”‚  3 |     print(greeting)  # output                      β”‚   β”‚
β”‚  β”‚  4 |     return 42                                      β”‚   β”‚
β”‚  β”‚  5 |                                                    β”‚   β”‚
β”‚  β”‚    |     ^      ^       ^      ^                        β”‚   β”‚
β”‚  β”‚    |  keyword  type   string  comment                   β”‚   β”‚
β”‚  β”‚    |  (130deg)  (240deg)  (157deg)  (gray-green)        β”‚   β”‚
β”‚  β”‚    |                                                    β”‚   β”‚
β”‚  β”‚    |  All colors derive from 130deg (Green)             β”‚   β”‚
β”‚  β”‚    |  Opening this file = entering a "green world"      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Golden Angle for Tokens

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  FULL GOLDEN ANGLE: 137.5 degrees                               β”‚
β”‚  ═══════════════════════════════                                β”‚
β”‚                                                                 β”‚
β”‚  Based on golden ratio (phi = 1.618...)                         β”‚
β”‚  360 / phi^2 = 137.5077...                                      β”‚
β”‚                                                                 β”‚
β”‚  Maximizes visual separation when generating N colors           β”‚
β”‚  No matter how many, they never cluster                         β”‚
β”‚                                                                 β”‚
β”‚      Color 1: 0 deg                                             β”‚
β”‚      Color 2: 137.5 deg                                         β”‚
β”‚      Color 3: 275 deg                                           β”‚
β”‚      Color 4: 52.5 deg                                          β”‚
β”‚      ...                                                        β”‚
β”‚                                                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  SMALLER ANGLE: 27.5 degrees (for syntax tokens)                β”‚
β”‚  ═══════════════════════════════════════════════                β”‚
β”‚                                                                 β”‚
β”‚  Used for tokens WITHIN a file's spectrum                       β”‚
β”‚  Creates smooth progression of related hues                     β”‚
β”‚                                                                 β”‚
β”‚  From SEED (e.g., 230 for .ts):                                 β”‚
β”‚      Token 0 (keyword):  230 deg                                β”‚
β”‚      Token 1 (function): 257.5 deg (+27.5)                      β”‚
β”‚      Token 2 (number):   285 deg (+55)                          β”‚
β”‚      Token 3 (builtin):  312.5 deg (+82.5)                      β”‚
β”‚                                                                 β”‚
β”‚  All tokens are "neighbors" on the color wheel                  β”‚
β”‚  Related but distinguishable                                    β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Token Color Wheel

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  TOKENS ON THE COLOR WHEEL (starting from 180 deg)              β”‚
β”‚                                                                 β”‚
β”‚                        0 deg (Red)                              β”‚
β”‚                            |                                    β”‚
β”‚                      7     |                                    β”‚
β”‚                 (attribute)| 6 (tag-name)                       β”‚
β”‚                       \    |  /                                 β”‚
β”‚                        \   | /                                  β”‚
β”‚                         \  |/     5 (tag)                       β”‚
β”‚   270 deg (Blue) ────────+-─────── 90 deg (Green)               β”‚
β”‚                   4 (meta) |  \                                 β”‚
β”‚                          / |   \                                β”‚
β”‚                         /  |    \                               β”‚
β”‚            3 (builtin) /   |     \  0 (keyword)                 β”‚
β”‚                       /    |      \                             β”‚
β”‚                      /     |       \                            β”‚
β”‚          2 (number) /      |        \ 1 (function)              β”‚
β”‚                            |                                    β”‚
β”‚                        180 deg (Cyan)                           β”‚
β”‚                                                                 β”‚
β”‚  Starting from 180 deg (cyan), tokens progress clockwise        β”‚
β”‚  by 27.5 degrees each, covering about 195 degrees total         β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Comment Special Case

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  COMMENTS: BLEND WITH GRAY                                      β”‚
β”‚                                                                 β”‚
β”‚  Comments should not demand attention                           β”‚
β”‚  They should "whisper" their file's color identity              β”‚
β”‚                                                                 β”‚
β”‚  Formula: Mix SEED color with 60% gray                          β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  SEED (Blue):   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  oklch(55% 0.15 230)   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Gray:          β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  oklch(50% 0 0)    β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Mix at 40%/60%:                                        β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  L = 0.55 * 0.4 + 0.50 * 0.6 = 0.52                     β”‚   β”‚
β”‚  β”‚  a = -0.10 * 0.4 + 0 * 0.6 = -0.04                      β”‚   β”‚
β”‚  β”‚  b = -0.11 * 0.4 + 0 * 0.6 = -0.044                     β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Result:        β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’  Grayish-blue     β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  A subtle hint of blue that says "I'm from the blue     β”‚   β”‚
β”‚  β”‚  family" without demanding attention                    β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

File Type Hue Assignments

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  FILE EXTENSION TO HUE MAPPING                                  β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚Extension β”‚ Hue  β”‚ Color        β”‚ Rationale              β”‚   β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€   β”‚
β”‚  β”‚ .ts      β”‚ 230  β”‚ Blue         β”‚ TypeScript (Microsoft) β”‚   β”‚
β”‚  β”‚ .js      β”‚ 55   β”‚ Yellow       β”‚ JavaScript (classic)   β”‚   β”‚
β”‚  β”‚ .py      β”‚ 130  β”‚ Green        β”‚ Python (common)        β”‚   β”‚
β”‚  β”‚ .rs      β”‚ 35   β”‚ Orange       β”‚ Rust (official)        β”‚   β”‚
β”‚  β”‚ .go      β”‚ 195  β”‚ Cyan         β”‚ Go (gopher color)      β”‚   β”‚
β”‚  β”‚ .rb      β”‚ 355  β”‚ Red          β”‚ Ruby (gemstone)        β”‚   β”‚
β”‚  β”‚ .java    β”‚ 80   β”‚ Yellow-Green β”‚ Java (coffee)          β”‚   β”‚
β”‚  β”‚ .kt      β”‚ 270  β”‚ Purple       β”‚ Kotlin (JetBrains)     β”‚   β”‚
β”‚  β”‚ .swift   β”‚ 340  β”‚ Orange-Red   β”‚ Swift (bird)           β”‚   β”‚
β”‚  β”‚ .c       β”‚ 200  β”‚ Teal         β”‚ C (classic)            β”‚   β”‚
β”‚  β”‚ .cpp     β”‚ 210  β”‚ Blue-Teal    β”‚ C++ (similar to C)     β”‚   β”‚
β”‚  β”‚ .cs      β”‚ 290  β”‚ Violet       β”‚ C# (Microsoft)         β”‚   β”‚
β”‚  β”‚ .html    β”‚ 20   β”‚ Red-Orange   β”‚ HTML (web)             β”‚   β”‚
β”‚  β”‚ .css     β”‚ 240  β”‚ Blue-Violet  β”‚ CSS (styling)          β”‚   β”‚
β”‚  β”‚ .scss    β”‚ 300  β”‚ Magenta      β”‚ SCSS (Sass)            β”‚   β”‚
β”‚  β”‚ .json    β”‚ 50   β”‚ Orange-Yellowβ”‚ JSON (data)            β”‚   β”‚
β”‚  β”‚ .yaml    β”‚ 180  β”‚ Cyan         β”‚ YAML (config)          β”‚   β”‚
β”‚  β”‚ .md      β”‚ 100  β”‚ Lime         β”‚ Markdown (text)        β”‚   β”‚
β”‚  β”‚ .sh      β”‚ 140  β”‚ Green        β”‚ Shell (terminal)       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

UI Elements from SEED

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  THE ENTIRE EDITOR ADOPTS THE FILE'S COLOR                      β”‚
β”‚                                                                 β”‚
β”‚  Given SEED = oklch(55% 0.15 230) for .ts file                  β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Element           β”‚ Derivation                            β”‚ β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚
β”‚  β”‚ selection         β”‚ SEED + 85% transparent                β”‚ β”‚
β”‚  β”‚ line-number       β”‚ SEED + 70% gray                       β”‚ β”‚
β”‚  β”‚ scrollbar         β”‚ SEED + 90% transparent                β”‚ β”‚
β”‚  β”‚ cursor            β”‚ Brighter, more saturated              β”‚ β”‚
β”‚  β”‚ matching-bracket  β”‚ SEED + 30% white                      β”‚ β”‚
β”‚  β”‚ indent-guide      β”‚ SEED + 95% transparent                β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                 β”‚
β”‚  These elements "belong" to the file's color world              β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  .ts file:        EVERYTHING has a blue tint            β”‚   β”‚
β”‚  β”‚  ────────────────────────────────────────────────────   β”‚   β”‚
β”‚  β”‚  | 1 |  const x = "hello";     |    β–“β–“β–“  <- scrollbar   β”‚   β”‚
β”‚  β”‚  | 2 |  function foo() {       |    β–“β–“β–“                 β”‚   β”‚
β”‚  β”‚  | 3 |    return x;            |    β–“β–“β–“                 β”‚   β”‚
β”‚  β”‚  | 4 |  }                      |    β–“β–“β–“                 β”‚   β”‚
β”‚  β”‚  ^^^^^                                                  β”‚   β”‚
β”‚  β”‚  line numbers (gray-blue)                               β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  .py file:        EVERYTHING has a green tint           β”‚   β”‚
β”‚  β”‚  ────────────────────────────────────────────────────   β”‚   β”‚
β”‚  β”‚  | 1 |  x = "hello"            |    β–‘β–‘β–‘  <- scrollbar   β”‚   β”‚
β”‚  β”‚  | 2 |  def foo():             |    β–‘β–‘β–‘                 β”‚   β”‚
β”‚  β”‚  | 3 |      return x           |    β–‘β–‘β–‘                 β”‚   β”‚
β”‚  β”‚  | 4 |                         |    β–‘β–‘β–‘                 β”‚   β”‚
β”‚  β”‚  ^^^^^                                                  β”‚   β”‚
β”‚  β”‚  line numbers (gray-green)                              β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Traditional vs Spectrum

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  COMPARISON                                                     β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  TRADITIONAL (Fixed Colors)                             β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Token Type     Color         Used In                   β”‚   β”‚
β”‚  β”‚  ──────────     ─────         ───────                   β”‚   β”‚
β”‚  β”‚  keyword        Blue          .ts, .py, .rs, .go...     β”‚   β”‚
β”‚  β”‚  string         Green         all files                 β”‚   β”‚
β”‚  β”‚  function       Yellow        all files                 β”‚   β”‚
β”‚  β”‚  number         Orange        all files                 β”‚   β”‚
β”‚  β”‚  comment        Gray-Green    all files                 β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Pros: Consistent, easy to learn                        β”‚   β”‚
β”‚  β”‚  Cons: All files look the same                          β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  SYNTAX SPECTRUM (Derived Colors)                       β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  .ts file (SEED 230):              .py file (SEED 130): β”‚   β”‚
β”‚  β”‚  keyword   180 deg (cyan)          keyword   80 deg     β”‚   β”‚
β”‚  β”‚  string    207.5 deg               string    107.5 deg  β”‚   β”‚
β”‚  β”‚  function  235 deg                 function  135 deg    β”‚   β”‚
β”‚  β”‚  comment   gray-blue               comment   gray-green β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Pros: Each file type has unique identity               β”‚   β”‚
β”‚  β”‚        "Blue world" for TS, "Green world" for Python    β”‚   β”‚
β”‚  β”‚        Easier to identify file type at a glance         β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  Cons: More variation to learn                          β”‚   β”‚
β”‚  β”‚        "keyword" looks different in different files     β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Takeaways

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                 β”‚
β”‚  SUMMARY                                                        β”‚
β”‚                                                                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  1. Each file extension has a unique SEED hue           β”‚   β”‚
β”‚  β”‚     (.ts = 230, .py = 130, .rs = 35, etc.)              β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  2. Token colors rotate by 27.5 degrees from SEED       β”‚   β”‚
β”‚  β”‚     Creates related but distinguishable colors          β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  3. Comments blend SEED with gray (60%)                 β”‚   β”‚
β”‚  β”‚     Subtle hint of file's color identity                β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  4. UI elements also derive from SEED                   β”‚   β”‚
β”‚  β”‚     Selection, line numbers, scrollbar, cursor          β”‚   β”‚
β”‚  β”‚     Entire editor adopts the file's world               β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β”‚  5. Golden angle (27.5) ensures token distinction       β”‚   β”‚
β”‚  β”‚     Close enough to feel related                        β”‚   β”‚
β”‚  β”‚     Far enough to be distinguishable                    β”‚   β”‚
β”‚  β”‚                                                         β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                 β”‚
β”‚  When you open a TypeScript file, you enter a blue world.       β”‚
β”‚  When you switch to Python, you enter a green world.            β”‚
β”‚  Language identity becomes visible through color.               β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜